将环境变量从命令行传递到纱线

Ish*_*mad 8 windows command-line yarnpkg

我有一个从环境变量或配置中读取端口号的代码。代码看起来像这样

const port = process.env.PORT || serverConfig.port;
await app.listen(port);
Run Code Online (Sandbox Code Playgroud)

要在不定义环境变量的情况下运行应用程序,我运行以下 yarn 命令。

yarn start:dev

此命令在 Linux shell 和 Windows 命令行中成功运行。

现在,我想传递环境变量。我试着跟随,

PORT=2344 yarn start:dev

此命令在 Linux shell 中成功运行,但在 Windows 命令行中失败。我尝试了以下方法,但无法使其正常工作。

试过:PORT=2344 yarn start:dev

我收到错误消息:'PORT' 不是内部或外部命令,也不是可运行的程序或批处理文件。

试过:yarn PORT=2344 start:dev

我收到错误:未找到 yarn run v1.17.3 错误命令“PORT=2344”。info 访问https://yarnpkg.com/en/docs/cli/run获取有关此命令的文档。

请问有什么想法吗?我知道,我可以从 Windows 的系统属性中定义环境变量。但是,如果我可以从命令行做到这一点,有什么办法吗?

小智 7

您可以在 Windows 命令提示符下使用&(或&&) 链接命令。要设置环境变量,您需要使用该set命令。

结果应该如下所示set PORT=1234 && yarn start:dev:


bri*_*t08 6

我建议您使用名为cross-env的 NPM 模块。无论平台如何,它都允许在命令行上添加特定的环境变量。话虽如此,您可以尝试:

$ cross-env PORT=2344 yarn start:dev
Run Code Online (Sandbox Code Playgroud)


Ish*_*mad 1

在 Windows 命令提示符中找到了此问题的解决方案。

  1. 在项目根文件夹(src 文件夹外部)中创建一个 .env 文件。

  2. 在其中定义 PORT。就我而言,.env 文件的内容将是,

  1. 运行纱线启动:dev

  2. 应用程序将使用您在 .env 文件中指定的端口号。

  • 我认为只有当您使用默认情况下不存在的 dotenv 模块时,这才有效。 (6认同)