Node.js 集中式节点单元
我希望将我的节点模块存储在一个集中的位置,比如说,Node.js 集中式节点单元,node.js,debian,npm,node-modules,Node.js,Debian,Npm,Node Modules,我希望将我的节点模块存储在一个集中的位置,比如说,/var/http/common/,并让我的应用程序在另一个位置运行,比如说,/var/http/www/apps/app\1\u NAME/ 我可以在server.js中设置requires,以使用require('../../../common/express')之类的相对路径,但是从NPM的作者的阅读来看,听起来好像我在破解它,我应该使用NPM link为节点创建一个“本地”引用(该引用符号链接到实际安装) 我首先在/var/http/co
/var/http/common/
,并让我的应用程序在另一个位置运行,比如说,/var/http/www/apps/app\1\u NAME/
我可以在server.js
中设置requires,以使用require('../../../common/express')
之类的相对路径,但是从NPM的作者的阅读来看,听起来好像我在破解它,我应该使用NPM link
为节点创建一个“本地”引用(该引用符号链接到实际安装)
我首先在
/var/http/common/
中安装了节点模块,但当我尝试创建符号链接(npm link../../../common/node_modules/express
)时,npm似乎将其视为“全局”安装,并在/usr/local/lib/node_modules/express中重新安装了express(并创建了一个“local”符号链接到它/node\u modules/express->
),这不是我所期望的。这就是我真正想要的吗?我应该先使用npm config set prefix
吗?您可以通过在命令中添加“-g”来全局安装节点模块。例如:
npm install express -g
在您的代码中,您可以正常使用它:
require('express');
然后将模块存储在/usr/local/lib/node_modules中,结果是:在执行任何其他操作之前,我应该设置npm config set prefix
似乎npm-link
和npm-install-g
做了同样的事情;然而,npm-link
将在全局范围内安装模块,同时它也会在node\u-modules
中创建一个指向$prefix/lib/node\u-modules/$module
的本地符号链接。不正确:如果没有该本地符号链接,节点将抱怨无法找到(全局安装的)模块。这是通过我自己的尝试确定的,也可以从npm帮助文件夹中推断出来:
•如果您需要,请在本地安装它()
•如果要在命令行上运行它,请在全局范围内安装它
•如果您需要两个,请在两个位置安装,或使用npm链接
这并没有具体解决我所问的问题:我希望将模块存储在一个中心位置(由多个节点应用程序访问),但我不关心从命令中使用它们,就像我只想在require(“”)
中使用它们一样
至于我关于在require(“”)
中使用相对路径的问题,我仍然没有得到/找到权威的答案,但从npm link
的存在来看,使用rel路径似乎不是作者的意图。对我来说,这似乎是一种情况,但我希望与Node的标准保持一致。Hi Max.谢谢,但我不希望它们安装在该位置(我是否应该先使用npm config set prefix?)。我也问了,因为我没有运行npm安装,我运行了npm链接;所以我想知道为什么它也运行了一个安装,可能是因为它检测到模块没有安装在默认的全局位置吗?您认为需要设置$NODE_PATH以避免本地sym链接吗