如何将多个参数传递给npm start

4

我正在学习Node.js并编写了一些基础代码来开始尝试。

如果我想向应用程序传递任何参数,我使用以下命令:

PORT=300 npm start

可以使用以下代码来访问它:

process.env.PORT

但是我现在想传递多个参数,例如:

PORT=3000 user=dev npm start

当我传入多个参数时,启动失败。

然后我尝试在参数之间使用“&&”,这样就不会再失败了,但是只有最后一个参数成功传递给脚本,例如,如果我使用以下命令启动脚本:

PORT=3000 && user=dev npm start

我可以通过process.env.user获取用户参数,但是端口号(PORT)未定义。

或者,如果我这样启动应用程序:

user=dev && PORT=3000 npm start

我现在可以访问PORT参数,但是process.env.user未定义。 注:我正在Windows环境下运行。

2
PORT=3000 user=dev npm start 应该在 Linux 上运行。 - Prakash Sharma
@Prakashsharma
我尝试了这个,当我访问process.env.PORT时,我得到一个字符串'3000 user=dev'
- Nick Div
@Prakashsharma 谢谢。那确实是答案。但我使用了一个糟糕的 cmd 替代方案,这导致了问题。 - Nick Div
3个回答

2
尝试升级你的npm版本,然后"PORT=3000 user=dev npm start"就可以正常工作了。

我尝试过这个,当我访问 process.env.PORT 时,我得到了一个字符串 '3000 user=dev'。 - Nick Div
你的npm版本是多少?在我的3.10.10上运行良好。 - Ashish Pandey
当我执行 node -v 命令时,返回的是 'v9.3.0',而 npm -v 返回的则是 5.5.1。 - Nick Div
无法复制,即使使用npm版本5.6.0 :( 仍然可以工作。 - Ashish Pandey
我在使用Windows操作系统。这会有影响吗? - Nick Div
我找到了问题所在。这个答案确实有效。我一直在复制粘贴命令,但是我使用的cmd模拟器解释命令时出现了错误,但是字符被隐藏了,所以我甚至没有意识到这一点。 - Nick Div

1
在我的API代码库中,我使用了以下命令:
PORT=5555 pm2 start app.js --name API --env production -f

但是,每次记住那么多长参数列表都很困难。我建议使用单个pm2配置文件而不是手动运行每个应用程序。它可以使用env参数分离开发、staging和生产环境。这是正确的指南,http://pm2.keymetrics.io/docs/usage/application-declaration/ 我使用的是json格式,一直在使用这个方法,现在非常容易处理我的运行在pm2上的应用程序。
希望这能帮到你。

-2

你可以将这些值作为命令行参数传递,并在脚本/代码中按顺序访问它们。 例如 -

npm start 3000 dev

你可以通过以下方式访问它们 -

process.argv[i]

所以在i=2时,您将获得3000,在i=3时,您将以字符串形式获得dev。


1
这不是使用环境变量的方法。 - NikxDa
我正在讲解一种传递多个参数并访问它们的方法。不过没关系,你可以将其作为可选方案使用。 - Rahul
我知道,但这并不是问题所要求的。因此,这个答案并不是很合适。 - NikxDa
@RahulYadav 我尝试过这个,但正如NikxDa所提到的,我不想像这样传递参数 :( 但还是谢谢你的努力。 - Nick Div
所以不要使用它。 - Rahul

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