NPM传递package.json抛出错误

时间:2016-04-08 23:49:13

标签: json node.js npm package bower

我已经创建了一个NPM包并安装它来测试它。在具有npm install的嵌套node_modules文件夹中安装GruntJS的依赖项时,NPM / Node会抛出ENOENT错误。

我采取以下步骤来创建错误:

  • npm install pavilion
  • cd node_modules/pavilion
  • npm install

安装grunt的依赖项时,在package.json中列出...它会抛出错误,如下所示。 PS。请继续阅读以下内容。

npm ERR! Darwin 14.5.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v5.0.0
npm ERR! npm  v3.8.6
npm ERR! path /Users/Baasdesign/Desktop/test/node_modules/pavilion/node_modules/.staging/pavilion-8a19d0be
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename

npm ERR! enoent ENOENT: no such file or directory, rename '/Users/Baasdesign/Desktop/test/node_modules/pavilion/node_modules/.staging/pavilion-8a19d0be' -> '/Users/Baasdesign/Desktop/test/node_modules/pavilion'
npm ERR! enoent ENOENT: no such file or directory, rename '/Users/Baasdesign/Desktop/test/node_modules/pavilion/node_modules/.staging/pavilion-8a19d0be' -> '/Users/Baasdesign/Desktop/test/node_modules/pavilion'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! Darwin 14.5.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v5.0.0
npm ERR! npm  v3.8.6
npm ERR! path npm-debug.log.575049388
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open

npm ERR! enoent ENOENT: no such file or directory, open 'npm-debug.log.575049388'
npm ERR! enoent ENOENT: no such file or directory, open 'npm-debug.log.575049388'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/Baasdesign/Desktop/test/node_modules/pavilion/npm-debug.log

现在奇怪的部分。当我使用Bower安装包时...我没有收到错误。以下是我的步骤:

  • bower install pavilion
  • cd bower_components/pavilion
  • npm install

一切安装都很好。区别? ---> package.json。 bower install package.json可以找到。 NPM没有。

Bower给了我一个干净的package.json,由我自己创建,然后发布到npm。 NPM安装给了我一个package.json,那里有更多的信息。当我使用bower package.json ...一切安装正常...即使我粘贴并替换node_modules文件夹中的npm package.json。

这里的交易是什么?似乎随npm安装提供的package.json会破坏依赖项安装。

这是bower package.json交付: http://pastebin.com/g8FgSDNG

这是npm package.json交付: http://pastebin.com/xTiQ15ih

我尝试npm cache clean,但它没有用。

的sysinfo:

  • OSX Yosemite
  • node - 5.10.1
  • npm - 3.8.6

2 个答案:

答案 0 :(得分:1)

节点非常棒,但有时会很痛苦!

我最近自己犯了这个错误,并且回到早期版本的节点修复了我的问题。

我建议您尝试使用“节点版本管理器”的早期安装,在您的系统上安装一些节点版本,并提供在不同版本之间切换的方法。

我知道这不是一个非常技术性的答案,我希望有人对你的问题有具体的答案!

[https://github.com/creationix/nvm]

这是版本管理器链接希望它有所帮助

答案 1 :(得分:0)

问题是我没有在package.json中保存依赖项。 如果你这样做,我猜Node会错误的路径。

所以正确的工作流程是:

  • initialProcessing(sourceObject, errorObject) if (errorObject.errorCode ! = null or not blanks) stop processing else Do procedure A (modifiedSourceObject, errorObject); if ( errorObject.errorCode ! = null or not blanks ) stop processing else Do procedure B (anotherObject, errorObject); if ( errorObject.errorCode ! = null or not blanks ) stop processing else Do procedure C (someotherObject, errorObject) ............. ......... (创建package.json)
  • npm init
  • npm install <package> --save-dev
  • cd node_modules/pavilion

然后它工作正常。需要将npm install添加到父目录的package.json。