在Cordova项目中添加自定义本地插件时出错

在Cordova项目中添加自定义本地插件时出错,cordova,plugins,visual-studio-2015,visual-studio-cordova,Cordova,Plugins,Visual Studio 2015,Visual Studio Cordova,我在VS 2015中创建了一个Cordova应用程序(适用于windows)。此应用程序预计将使用插件访问托管代码(C#)中实现的功能。我已经按照预期的架构创建了一个插件 现在,我在使用添加插件jn Cordova应用程序时出错 Config -> Plugins-> Custom -> Local -> Apache Cordova Tools的完整输出是: ------ Ensuring correct global installation of package

我在VS 2015中创建了一个Cordova应用程序(适用于windows)。此应用程序预计将使用插件访问托管代码(C#)中实现的功能。我已经按照预期的架构创建了一个插件

现在,我在使用添加插件jn Cordova应用程序时出错

Config -> Plugins-> Custom -> Local ->
Apache Cordova Tools的完整输出是:

------ Ensuring correct global installation of package from source package directory: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ApacheCordovaTools\packages\vs-tac
------ Name from source package.json: vs-tac
------ Version from source package.json: 1.0.42
------ Package already installed globally at correct version.
Installing plugin 'D:\Learning\WindowsApp\Window 10\TestPlugin\MTIFirstCalculator'
Starting launch process C:\Users\Manoj\AppData\Roaming\Microsoft\VisualStudio\MDA\vs-npm\2.14.9\node.exe "C:\Users\Manoj\AppData\Roaming\npm\node_modules\vs-tac\pluginInstall.js" --action install --projectSourceDir "D:\Learning\WindowsApp\Window 10\FirstCordovaApp\FirstCordovaApp" --pluginName D:\Learning\WindowsApp\Window 10\TestPlugin\MTIFirstCalculator --language en-US  --cliVersion "6.1.1" --npmInstallDir "C:\Users\Manoj\AppData\Roaming\npm"  --loglevel warn  
------ Cordova tools 6.1.1 already installed.
Each package is licensed to you by its owner. Microsoft is not responsible for, nor does it grant any licenses to, third-party packages. Some packages may include dependencies which are governed by additional licenses. Follow the package source (feed) URL to determine any dependencies.
Executing "before_plugin_add"  hook for all plugins.
No version specified, retrieving version from config.xml
No version given in config.xml, attempting to use plugin engine info
C:\Users\Manoj\AppData\Roaming\npm\node_modules\vs-tac\node_modules\q\q.js:126
                    throw e;
                          ^
Error: Registry returned 404 for GET on https://registry.npmjs.org/FirstCordovaApp
    at makeError (C:\Users\Manoj\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\6.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\npm\node_modules\npm-registry-client\lib\request.js:302:12)
    at CachingRegistryClient.<anonymous> (C:\Users\Manoj\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\6.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\npm\node_modules\npm-registry-client\lib\request.js:280:14)
    at Request._callback (C:\Users\Manoj\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\6.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\npm\node_modules\npm-registry-client\lib\request.js:210:14)
    at Request.self.callback (C:\Users\Manoj\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\6.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\npm\node_modules\request\request.js:187:22)
    at Request.emit (events.js:110:17)
    at Request.<anonymous> (C:\Users\Manoj\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\6.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\npm\node_modules\request\request.js:1044:10)
    at Request.emit (events.js:107:17)
    at IncomingMessage.<anonymous> (C:\Users\Manoj\AppData\Roaming\npm\node_modules\vs-tac\node_modules\cordova\6.1.1\node_modules\cordova\node_modules\cordova-lib\node_modules\npm\node_modules\request\request.js:965:12)
    at IncomingMessage.emit (events.js:129:20)
    at _stream_readable.js:908:16
Done
----确保从源程序包目录正确全局安装程序包:C:\Program Files(x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\ApacheCordovaTools\packages\vs tac
------来自source package.json的名称:vs tac
------来自source package.json的版本:1.0.42
------包已以正确版本全局安装。
正在安装插件“D:\Learning\WindowsApp\Window 10\TestPlugin\MTIFirstCalculator”
启动启动过程C:\Users\Manoj\AppData\Roaming\Microsoft\VisualStudio\MDA\vs npm\2.14.9\node.exe“C:\Users\Manoj\AppData\Roaming\npm\node\U模块\vs tac\pluginInstall.js”--操作安装--projectSourceDir“D:\Learning\WindowsApp\Window 10\FirstCordovaApp\FirstCordovaApp”--pluginName D:\Learning\WindowsApp\Window 10\TestPlugin\MTIFirstCalculator--language en-US--cliVersion“6.1.1”--npmInstallDir“C:\Users\Manoj\AppData\Roaming\npm”--日志级别警告
------Cordova tools 6.1.1已安装。
每个软件包都由其所有者授权给您。Microsoft不对第三方软件包负责,也不对其授予任何许可证。某些软件包可能包含由其他许可证管理的依赖项。按照包源(提要)URL确定任何依赖项。
对所有插件执行“before\u plugin\u add”钩子。
未指定版本,正在从config.xml检索版本
config.xml中未给出版本,正在尝试使用插件引擎信息
C:\Users\Manoj\AppData\Roaming\npm\node\u modules\vs tac\node\u modules\q\q.js:126
投掷e;
^
错误:注册表返回404以启动https://registry.npmjs.org/FirstCordovaApp
在makeError(C:\Users\Manoj\AppData\Roaming\npm\node\u modules\vs-tac\node\u modules\cordova\6.1.1\node\u modules\cordova lib\node\u modules\npm\node\u modules\npm registry client\lib\request.js:302:12)
在CachingRegistryClient。(C:\Users\Manoj\AppData\Roaming\npm\node\u modules\vs tac\node\u modules\cordova\6.1.1\node\u modules\cordova\node\u modules\cordova lib\node\u modules\npm\node\u modules\npm registry client\lib\request.js:280:14)
根据请求进行回调(C:\Users\Manoj\AppData\Roaming\npm\node\u modules\vs tac\node\u modules\cordova\6.1.1\node\u modules\cordova\node\u modules\cordova lib\node\u modules\npm\node\u modules\npm注册表客户端\lib\Request.js:210:14)
at Request.self.callback(C:\Users\Manoj\AppData\Roaming\npm\node\u modules\vs tac\node\u modules\cordova\6.1.1\node\u modules\cordova\node\u modules\cordova lib\node\u modules\npm\node\u modules\Request\Request.js:187:22)
at Request.emit(events.js:110:17)
应要求。(C:\Users\Manoj\AppData\Roaming\npm\node\u modules\vs-tac\node\u modules\cordova\6.1.1\node\u modules\cordova\node\u modules\cordova lib\node\u modules\npm\node\u modules\request\request.js:1044:10)
at Request.emit(events.js:107:17)
在收到消息时。(C:\Users\Manoj\AppData\Roaming\npm\node\u modules\vs-tac\node\u modules\cordova\6.1.1\node\u modules\cordova\node\u modules\cordova lib\node\u modules\npm\node\u modules\request\request.js:965:12)
在IncomingMessage.emit(events.js:129:20)
at_stream_readable.js:908:16
多恩
plugin.xml的内容是:

<?xml version="1.0" encoding="UTF-8"?>
<plugin id="MTIFirstCalc" version="0.2.0" xmlns="http://apache.org/cordova/ns/plugins/1.0">
    <name>MTIFirstCalc</name>
    <description>Calculator</description>
    <license>MTI</license>
    <keywords></keywords>
    <repo></repo>
    <issue></issue>

    <js-module src="www/MTIFirstCalc.js" name="MTIFirstCalc">
        <clobbers target="window.MTICalculate" />
    </js-module>

    <!-- windows -->
    <platform name="windows">
        <js-module src="src/windows/MTIFirstCalcProxy.js" name="MTIFirstCalcProxy">
            <merges target="" />
        </js-module>

    </platform>

</plugin>

MTIFirstCalc
计算器
MTI

原因可能是什么?

我终于可以解决这个问题了。我不确定这是否是Apache Cordova Tools的缺陷或限制

实际的问题在于插件目录的创建路径。可能在指向插件位置的文件夹名称中不允许使用
空格

我的插件保存在
D:\Learning\WindowsApp\windows10\TestPlugin\MTIFirstCalculator
文件夹中

一旦我将路径更改为
D:\Learning\WindowsApp\Window10\TestPlugin\MTIFirstCalculator

请注意,
Window10
文件夹中的空间已被删除


即使在Cordova tools 6.5.0中也存在该缺陷

你的插件名是什么?你能发布完整的错误信息吗?插件的名称是MTIFirstCalc。插件的Id在xml中定义为com.MTI.MTIFirstCalc。我已经编辑了OP,以包含VS2015中Apache Cordova tools的完整输出。我刚刚尝试了你的插件id。它工作正常,请你发布你的
plugin.xml
?@ElvisXia MSFT我已经添加了plugin.xml的内容。请注意,我使用
local
选项尝试了另一个插件(由另一个人创建),但也没有成功。谢谢@ElvisXia MSFT。我终于可以解决这个问题了。似乎是Apache Cordova工具的缺陷/限制。