在最近的日子里, 许多将ova.js中的cordova平台更新到7.0.1版本的cordova开发人员在安装不是很新并且已经几个月没有更新的插件时面临着一个奇怪的例外。 :
Error: Failed to fetch plugin https://url-of-plugin-repository.git via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Error: cmd: Command failed with exit code 4294963228 Error output:
npm ERR! addLocal Could not install C:\Users\username\AppData\Local\Temp\npm-9904-d274866c\git-cache-756b062e\1e132d0a7a8dfd323b59c6b6edf6c4e142d3ee98
npm ERR! Windows_NT 10.0.14393
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "https://url-of-plugin-repository.git" "--save"
npm ERR! node v7.7.1
npm ERR! npm v4.1.2
npm ERR! code EISDIR
npm ERR! errno -4068
npm ERR! syscall read
npm ERR! eisdir EISDIR: illegal operation on a directory, read
npm ERR! eisdir This is most likely not a problem with npm itself
npm ERR! eisdir and is related to npm not being able to find a package.json in
npm ERR! eisdir a package you are trying to install.
npm ERR! Please include the following file with any support request:
npm ERR! c:\xampp\htdocs\cordova\hello\node_modules\npm-debug.log
正如问题所表明的, 问题显然与package.json文件有关, 该文件在旧插件中从未存在, 因此现在导致了此问题。除此之外, 通过其git存储库URL(例如https://github.com/ourcodeworld/cordova-ourcodeworld-filebrowser.git)安装的插件通常会发生此问题。这是通过cordova-fetch实现的, 该模块用于从npm和gitURLs中获取模块。它通过npm install获取模块。它还可以npm从项目中卸载模块。
解
遇到此错误, 你会发现自己有两种不同的观点:
- 你是插件的所有者。
- 你正在尝试安装第三方插件。
A.你是插件的所有者
如果你是插件的所有者, 并且有人报告他无法使用cordova add plugin URL命令安装插件, 则需要在插件的根文件夹中创建一个新的package.json文件。如果你不熟悉NPM, 则应在此处的官方文档中阅读有关软件包文件的更多信息。
要为你的插件创建一个新的软件包文件, 你显然会在命令行中使用Node.js并执行以下命令(位于终端在你的插件文件夹中):
npm init
此命令将启动一个交互式提示(你可以通过在每个问题上按Enter来跳过此提示), 以创建你的package.json文件。显然, 尽管不是必需的, 但是你应该正确提供所有信息。位于插件根文件夹中的package.json文件如下所示:
{
"name": "cordova-ourcodeworld-filebrowser", "version": "1.0.0", "description": "Some description of what your plugin does", "main": "index.js", "scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
}, "repository": {
"type": "git", "url": "git+https://github.com/username/plugin-repository.git"
}, "keywords": [], "author": "Author Name", "license": "MIT", "bugs": {
"url": "https://github.com/username/plugin-repository/issues"
}, "homepage": "https://github.com/username/plugin-repository#readme"
}
该信息显然应该根据你/插件的正确信息进行更改。
B.如果是第三方插件
如果你不是插件的所有者, 而只是尝试安装在Github上找到的很棒的插件, 那么你需要鼓励插件的所有者尽快创建此文件, 以防止出现这种情况。在以后的安装中出现错误。如果似乎不再维护该插件, 则可以使用git下载该插件, 自己创建此文件, 最后从本地源安装该插件。
1.下载存储库源代码
如果插件托管在Github上, 则可以使用git例如将其克隆到计算机上的本地文件夹中(在此示例中, 将被克隆到C:/ Users / Me / Desktop中):
git clone https://github.com/ourcodeworld/cordova-ourcodeworld-filebrowser.git
在克隆目录中, 它现在应该(一旦完成)是一个具有克隆存储库名称的新文件夹。
2.创建package.json文件
按照选项A(你是插件的所有者)的步骤创建package.json文件。
3.从本地源安装
最后一步, 你可以从克隆的存储库中安装插件, 而不是提供git URL, 而是提供插件的本地路径:
REM Navigate to the folder of your cordova project with the terminal
cd FolderOfYourCordovaProject
REM install the plugin from the local source
cordova plugin add C:/Users/Me/Desktop/cordova-ourcodeworld-filebrowser
编码愉快!