我尝试全局安装,然后像这样使用forever和forever-monitor:

NPM install -g forever forever-monitor

我看到通常的输出,也复制文件到全局路径的操作,但如果我尝试要求(“永远”);我得到一个错误,说模块没有找到。

我正在使用最新版本的node和npm,我已经知道了npm在全局vs本地安装中所做的改变,但我真的不想在每个项目上安装本地,我正在一个不支持链接的平台上工作,所以npm链接后的全局安装对我来说是不可能的。

我的问题是:为什么我不能要求全局安装包?这是一个功能还是一个漏洞?还是我做错了什么?

PS:只是让它非常清楚:我不想在本地安装。


当前回答

我试着按照其他答案,但对我有效的是

node_path = "C:\\Users\\{usename}\\AppData\\Roaming\\npm\\node_modules" Const *modulename* = require(node_path + "\\" +'*modulename*');

其他回答

在Node.js中,require不会查找安装全局模块的文件夹。

可以通过设置NODE_PATH环境变量来解决这个问题。在Linux中,这将是:

export NODE_PATH=/usr/lib/node_modules

注意:这取决于全局模块实际安装的位置。

参见:从全局文件夹加载。

为死灵而道歉,但我能够指定全局安装模块的硬编码路径:

var pg = require("/usr/local/lib/node_modules/pg");

这并不完美,但考虑到Unity3d试图“编译”项目目录中包含的所有javascript,我真的不能安装任何包。

你可以使用包requireg来解决这个问题:

var forever = require('requireg')('forever')

会成功的。

此外,还有另一个模块global-npm,虽然它是专门用于使用全局npm的,但你可以看看简短的代码,看看这项技术是如何工作的。

npm install express -g
cd ~/mynodeproject/
npm link express

这将把您的本地项目文件夹链接到全局node_modules。

我试着按照其他答案,但对我有效的是

node_path = "C:\\Users\\{usename}\\AppData\\Roaming\\npm\\node_modules" Const *modulename* = require(node_path + "\\" +'*modulename*');