如何启动节点服务器并导出 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