在Windows 10中设置环境变量package.json

29

更新: 此问题已经解释过,这不是重复项,因为我已经尝试在环境变量之前添加set关键字,但并没有解决问题。


我正在学习Node并打字从一本书中获取示例。首先的例子涉及展示“http”模块的工作原理以及如何创建服务器来监听请求。在某个时候,该书要求将以下行添加到package.json文件的脚本部分:

"server": "SERVERPORT=3002 node ./fiboserver"

当我尝试使用npm run server运行示例时,我收到以下错误消息:

'SERVERPORT' 不是内部或外部命令,也不是可运行的程序或批处理文件。

我找不到任何关于这个问题的答案,最多我发现我可以尝试:

"server": "set SERVERPORT=3002 node ./fiboserver"

但也没有帮助,唯一的区别是除了错误消息之外我再次获得命令提示符,所以显然服务器从未运行。

我相信作者使用的是Linux机器,而我正在使用Windows 10笔记本电脑。

我真的致力于学习Node,并在Windows环境中工作。我相信在package.json中设置环境变量很重要,所以我真的需要一些帮助来弄清楚这个问题。

谢谢。


也许你应该用 && 符号分隔命令。set SERVERPORT=3002 && node ./fiboserver - Ibrahim
可能是如何在Windows中设置NODE_ENV=production?的重复问题。 - Simon
@Ibrahim - 谢谢。那个方法可行。你能否添加一个答案,这样我就可以将其设置为正确的解决方案? - Sergio Romero
@Simon - 你好。我不认为这是你提出的那个问题的重复,因为那个问题的答案只是在变量前使用“set”,而当我尝试时它并没有起作用。 - Sergio Romero
@SergioRomero 你好,我不同意。如果你看评论,答案已经给出了。 - Simon
4个回答

57

使用cross-env使其跨平台:

"server": "cross-env SERVERPORT=3002 node ./fiboserver"

24
在Windows上,您需要使用&&运算符将设置变量的命令与运行服务器的命令分开。也就是说,您需要像这样执行操作:"server": "set SERVERPORT=3002 && node ./fiboserver"

你最后会得到值"3002 "(注意空格)吗?这就是我遇到的问题,需要在&&之前去掉空格。 - undefined

5

我经历过同样的问题,并使用了以下方法之一。


方法1

如果我不使用npm包装器脚本运行

HOST=0.0.0.0 PORT=8000 ./node_modules/.bin/react-scripts start

启动开发服务器...

它可以正常工作。正如Quentin所说,这可能与npm如何外壳有关。

为了修复它,我已经进入package.json并将“start”脚本更改为

"start": "./node_modules/.bin/react-scripts start",

然后npm start可以正常运行。


方法2

使用cross-env包。

为此,请使用以下命令进行安装:

npm i cross-env

然后转到 package.json 文件并将其更改为

"start": "cross-env ./node_modules/.bin/react-scripts start",

然后运行npm start也能正常工作:

cross-env npm start


3
您可以将bash设置为package.json脚本运行程序,它将在Windows和Linux上正常工作。
只需设置一次:
- 对于yarn: yarn config set script-shell /bin/bash - 对于npm: npm config set script-shell /bin/bash 或者使用"C:\\Program Files\\git\\bin\\bash.exe"替代/bin/bash 这将允许您在跨平台上运行npm脚本:"server": "SERVERPORT=3002 node ./fiboserver"

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