我在windows 10上,但我使用的是git bash。当从git bash运行时:

DEBUG=foo node index.js

它可以正常工作并设置环境变量DEBUG。但如果我把它放进scriptspackage.json部分:
  "scripts": {
    "start": "DEBUG=foo node index.js"
  },

并从git bash运行以下命令,得到以下错误:
$ npm start

> [email protected] start C:\Users\maksym.koretskyi\Desktop\nodejs
> DEBUG=foo node index.js

'DEBUG' is not recognized as an internal or external command,
operable program or batch file.

为什么这么做?

最佳答案

你好像在Windows上运行。
假设你让bash像你说的那样工作,我会制作一个脚本:

#!/bin/bash
DEBUG=foo node index.js

例如,调用run-debug并使用:
"scripts": {
    "start": "bash run-debug"
},

package.json中确保DEBUG=foo node index.js命令由bash而不是command.com或windows中调用的shell解释。见Issue #6543: npm scripts shell select
如果您希望它甚至在没有bash的系统上运行,为了获得最大的跨平台兼容性,最好使用节点脚本而不是shell脚本:
"scripts": {
    "start": "node run-debug.js"
},

在这种情况下,run-debug.js可能包含如下内容:
let env = Object.create(process.env);
env.DEBUG = 'foo';
spawn('node', ['app.js'], {env});

另见:
NPM script under cygwin/windows: the syntax of the command is incorrect

关于node.js - 为什么DEBUG = foo Node index.js在package.json的scripts部分失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41379090/

10-16 20:59