Node.js 的 NODE_PATH 环境变量

12

在开发过程中,我曾经使用过WebStormnode_path =.环境变量。我已经设置了一个启动项目设置中的变量。现在我想尝试在服务器上运行该项目,但不知道如何在那里设置此变量。请帮助解决这个问题!


3
你需要设置环境变量 NODE_PATH,可能是在启动 node 的脚本中进行设置。 - Nitzan Shaked
3个回答

11

假设它是UNIX或Mac OS X服务器,请使用export NODE_PATH=并添加您想要的路径。


3
你能提供更多细节,告诉我在哪里添加导出代码吗?是在.env文件内部吗?还需要在其他地方导入它吗? - xunux
我知道这是一个晚回复,但是对于新手来说,你必须在命令提示符(即终端)中执行以下操作:export NODE_PATH=/YOUR_WHATEVER_PATH - محمد جعفر نعمة
1
当我在我的shell配置文件,即bash的/.bashrc文件中设置了这个环境变量时,使用`export NODE_PATH="/.local/lib/node_modules",波浪号~` -代表当前登录用户的主目录- 可能没有正确地扩展其相应的路径名,因此node无法定位任何全局模块。您可以使用命令行扩展来设置node_modules路径值,如此答案所述。 - polendina

6

我建议在运行命令之前设置变量,像这样:

NODE_PATH=src/ node myapp.js

这种方式可以在需要时设置变量。除非您确实需要使用不同版本的部署更改路径,否则最好采用此方法。

如果在Windows上,您可以使用这个小包使其在开发和生产环境中保持一致:win-node-env

为了获得额外的加分,请将它添加到package.json的启动脚本中,如下所示:

"scripts": {
    "start": "NODE_PATH=src/ node myapp.js"
}

那么在生产中,您只需要运行以下命令:npm start


这个对我很有用,谢谢!需要注意的是,根据您的部署策略,可能需要进行一些调整。 - xunux
我在使用这种方法时遇到了问题,理想情况下我希望它只存在于我的.env文件中,但似乎被忽略了。这会导致部署出现问题。 - xunux
.env 文件在命令开始运行后被读取。NODE_PATH 必须在运行任何 Node 命令之前设置。不要将 NODE_PATH 视为您的应用程序环境,而是视为 Node 的环境。 - mr haven
我认为 NODE_PATH 必须在操作系统环境中设置。或者,如果你想在 package.json 中定义它,那么你必须使用完整路径而不是相对路径。至少,在我的实验中是这样的。 - محمد جعفر نعمة
我不明白NODE_PATH=''的作用是什么,即使没有它,代码也可以正常运行! - Shayan

2

添加

将export NODE_PATH=...添加到您的系统环境设置(/etc/profile,~/.bash_profile...)中,使其生效。

或者

您可以在package.json(项目)中声明依赖项,如下所示:

{
    ...
    "dependencies": {
        "connect": "~2.0.3",
        ...
    },
    ...
}

并在同一文件夹中运行

npm install

希望能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接