如何启动节点服务器并导出 NODE_PATH(使用 npm start 或内联命令)

Posted

技术标签:

【中文标题】如何启动节点服务器并导出 NODE_PATH(使用 npm start 或内联命令)【英文标题】:How to start node server and export NODE_PATH (with npm start or inline command) 【发布时间】:2015-07-28 16:58:25 【问题描述】:

在启动服务器之前,我需要导出('set' 实际上,我使用的是 Win7)NODE_PATH 变量。我试图用这个命令来做(即使在命令行中也不起作用):

set NODE_PATH=./ && node server.js

对于 package.json:

  "scripts": 
    "start": "set NODE_PATH=. && node server.js"
  ,

但它不起作用。我得到了Error: Cannot find module,它仅在未指定NODE_PATH 时出现。

那么,如何解决这个问题呢?我需要一种正确的方法来导出 NODE_PATH 并使用 内联命令 运行服务器,或者为“启动”脚本指定两个单独的命令。

【问题讨论】:

【参考方案1】:

设置 NODE_PATH=./ ; && node server.js

在 Windows 上,上面的命令可以正常工作。通常,当您设置环境变量时,它应该在没有分号的情况下工作。但是在这里,可能是路径字符串导致了问题?

另外请注意,您应该以不同的方式为 Linux 设置环境变量,不得使用 set 关键字。如果您的脚本将在不同的平台上运行,可能最好使用诸如cross-env 之类的插件来编写您的脚本。

这个问题对Setting an environment variable before a command in Bash is not working for the second command in a pipe有帮助

【讨论】:

【参考方案2】:

你可以

NODE_PATH=./ node server.js

没有设置和; 在 bash 上测试过

【讨论】:

【参考方案3】:

以下是在 Linux (CentOS) 中对我有用的方法。我需要这个,因为正在使用的节点模块都是全局安装的。

"scripts": 
    "start": "export NODE_PATH=/usr/lib/node_modules && node myscript.js"
,

使用 export 而不是 set。不需要分号。

【讨论】:

以上是关于如何启动节点服务器并导出 NODE_PATH(使用 npm start 或内联命令)的主要内容,如果未能解决你的问题,请参考以下文章

st_network_paths 仅生成带有单个节点的 node_path

如何配置节点导出器的默认端口

React Material 启动脚本 NODE_PATH 无法识别

在任何空闲端口启动节点http服务器

使用 Jpom 快速发布项目到服务器教程

如何在没有节点导出器或 cadvisor 的情况下从目标服务器抓取数据