NPM:如何在package.json的预启动脚本中挂钩SET NODE_ENV?

时间:2017-03-20 17:29:02

标签: node.js npm

我有一个使用npm init -y创建的基本应用程序。在package.json中,我有一个指向server.js的主条目。

{
  "name": "rest-api",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "private": true,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "prestart": "SET NODE_ENV=dev"
}

我正在尝试在prestart中设置NODE_ENV变量,让npm调用main来调用npm start。但是,在prestart中设置的环境变量不会转发并且未定义。当我运行  npm start'时,控制台输出两个命令按顺序执行。

    PS D:\test\RestAPI> npm start

    > rest-api@1.0.0 prestart D:\test\RestAPI
    > set NODE_ENV=dev

    > rest-api@1.0.0 start D:\test\RestAPI
    > node server.js

    undefined
    [undefined] Listening on http://localhost:3000

但是当我从应用程序打印变量时,它是未定义的。我在这里做错了什么,或者它应该如何表现?有没有办法使用' SET NODE_ENV = dev'来调用和设置env变量?没有将它链接到节点server.js'

当我在'开始'如下所示,然后设置环境变量。

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
     "start": "set NODE_ENV=dev && node server.js"
  }

我正在Windows 10上测试,npm版本3.10.10。感谢您的帮助。

我知道如何使用' start'在package.json中完成此操作。这个问题具体到如何通过预启动来实现这一目标。

感谢。

0 个答案:

没有答案