我现在正在Windows上学习nodejs。有几个模块是通过npm全局安装的。nodejs无法找到已安装的模块。以玉为例,
npm install jade -g
Jade安装在“C:\Program Files (x86)\nodejs\node_modules”目录下,但下面的代码将失败,并提示“无法找到模块' Jade '”错误。
var jade = require('jade');
然而,当jade在本地安装时(npm中没有-g选项),代码将成功运行。我不想使用本地安装的模块,这对我来说是浪费磁盘空间。如何使全局安装的模块在Windows上工作?
我也有同样的问题,试图用npm install -g bower安装bower
我认为这是因为node是由另一个用户安装的,而不是我。
我卸载了节点,然后重新安装了它。在安装过程中,我看到了Add to PATH > npm模块选项的文本:
节点安装中的消息
节点安装完成后,我再次执行了npm install -g bower。现在凉亭起作用了。
当然没有必要重新安装节点与自己的用户,像我。解决方案必须通过NODE_PATH或PATH变量,正如其他用户所解释的那样。
这只是为了说明,只有当node已经由其他用户安装(或者在安装过程中没有标记Add to PATH > npm modules选项)时,才会发生此问题。
我将引用这个节点的博客文章…
In general, the rule of thumb is:
If you’re installing something that you want to use in your program, using require('whatever'), then install it locally, at the root of
your project.
If you’re installing something that you want to use in your shell, on the command line or something, install it globally, so that its
binaries end up in your PATH environment variable.
...
Of course, there are some cases where you want to do both.
Coffee-script and Express both are good examples of apps that have a
command line interface, as well as a library. In those cases, you can
do one of the following:
Install it in both places. Seriously, are you that short on disk space? It’s fine, really. They’re tiny JavaScript programs.
Install it globally, and then npm link coffee-script or npm link express (if you’re on a platform that supports symbolic links.) Then
you only need to update the global copy to update all the symlinks as
well.