节点包安装失败,因为节点在我的根目录中查找依赖项

时间:2015-01-06 16:06:11

标签: node.js filesystems npm node-modules

在使用npm安装软件包时,我最近遇到了一个问题,即Node无法找到模块/脚本。出于某种原因,它正在查看我的C:/目录,而不是C:/my-project/node_modules。特别是这个库很麻烦,但我也看到过这种情况。

我使用Node的v0.10.35运行Win7 x32。

这是我在尝试安装node-sass时看到的示例:

C:\node\test>npm install node-sass
> node-sass@2.0.0-beta install C:\node\test\node_modules\node-sass
> node scripts/install.js


module.js:340
    throw err;
          ^
Error: Cannot find module 'C:\scripts\install.js'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:929:3

npm ERR! node-sass@2.0.0-beta install: `node scripts/install.js`
npm ERR! Exit status 8
npm ERR!
npm ERR! Failed at the node-sass@2.0.0-beta install script.
npm ERR! This is most likely a problem with the node-sass package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node scripts/install.js
npm ERR! You can get their info via:
npm ERR!     npm owner ls node-sass
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "node-sass"
npm ERR! cwd C:\node\test
npm ERR! node -v v0.10.35
npm ERR! npm -v 1.4.28
npm ERR! code ELIFECYCLE
npm ERR! not ok code 0

一位同事发给我了他的install.js档案,我把它放在我的根里只是为了看看会发生什么。遗憾的是,一旦npm尝试安装根模块所需的模块,安装仍会失败。

2 个答案:

答案 0 :(得分:1)

尝试在我的Windows系统上安装node-sass时遇到了类似的问题。我将此报告为节点问题(请参阅Windows 8.1 Pro 64-bit: gulp-sass install failing due to node-sass@2.1.1 install script failure)。

我在本地安装的节点中添加了一些额外的日志记录,以查看实际发生的情况并发现以下内容:

nodejs \ node_modules \ npm \ lib \ utils \ spawn.js用于启动脚本\ install.js 通过添加一些额外的日志记录,我发现spawn.js正在使用以下命令行来启动install.js:C:\WINDOWS\system32\cmd.exe /c node scripts/install.js

在一个单独的命令提示符窗口中,我更改为我的c:\ test目录,然后运行C:\WINDOWS\system32\cmd.exe /c node以查看正在使用的目录节点。

在节点>提示,我跑了process.cwd()。这显示:c:\\而非c:\\test

当我看到上面的c:\\时,我记得我在Windows注册表中为HKEY_CURRENT_USER\Software\Microsoft\Command Processor添加了一个自动运行设置,以便每次启动cmd.exe时自动运行启动脚本。当我查看我的启动脚本时,我注意到该脚本中的最后一个命令是:cd c:\。这会导致cmd.exe的每个实例都使用c:\​​作为其起始目录。

从我的启动脚本中删除cd c:\后,npm install node-sass正确运行。

我希望这对遇到上述问题所述问题的其他人有所帮助。

答案 1 :(得分:0)

我想知道你的'prefix'配置变量是否已设置。你可以通过运行找到

> npm c get prefix

应该为全局包设置合理的值;如果它设置为“C:\”那么这可能会导致您的问题。

您可以通过运行

找到npm寻找配置的位置
> npm c get globalconfig
> npm c get localconfig

您可以列出所有配置变量

> npm c ls -l