如何在Windows中一行内设置多个环境变量?

9

我正在开发一个基于Node.js的项目,使用Jest作为测试框架。该项目在Windows上运行,但在命令行中设置多个环境变量时遇到了困难。

下面是package.json中相关的一行:

  "scripts": {
     "test": "SET NODE_ENV=test & SET DB_URI=postgresql://<database stuff>> & jest -t Suite1 --watch --verbose false"
  },

如上所示,我在通过npm run test运行jest之前,设置了一个NODE_ENV和一个DB_URI环境变量。

我的问题是,当jest运行时,DB_URI环境变量似乎没有被设置。从jest返回的错误信息可以看出它找不到它。我知道第一个NODE_ENV环境变量已经设置好,但不确定第二个环境变量有什么问题,是语法有误吗?有没有熟悉在Windows上使用jest的人尝试过类似于我所尝试的事情?

3个回答

13

只需要进行以下更改:

使用 &&,同时需要删除"&&"前后的空格。

"scripts": {
     "test": "SET NODE_ENV=test&&SET DB_URI=postgresql://<database stuff>>&&jest -t Suite1 --watch --verbose false"
  },

非常需要这个...谢谢! - R13mus

1

我建议您添加cross-env。它可以为Windows和POSIX设置多个环境变量。

package.json
{
  // ...
  "scripts": {
    "test": "cross-env NODE_ENV=test DB_URI=postgresql://<database stuff>> jest -t Suite1 --watch --verbose false"
  },
  "devDependencies": {
    "cross-env": "^6.0.0"
  }
}

0
如果您正在使用PowerShell设置环境变量,可以按照以下方式操作:
cmd /K "set f=df & echo %f%"

输出将是 "df"。

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