gpt4 book ai didi

javascript - 对设置 NODE_ENV 的方式有多少感到困惑

转载 作者:搜寻专家 更新时间:2023-10-31 22:51:57 27 4
gpt4 key购买 nike

我正在尝试设置一个标志来通知我的代码是在生产中还是在开发中。到目前为止,我已经看到:

在 VS Code 的 launch.json 中:

{ "configurations": { "env": "NODE_ENV": "development" } }

在 Node 的 package.json 中:

{ "scripts": { "start": "NODE_ENV=production" } }

在 Webpack 的 webpack.config.js 中:

module.exports = { "plugins": new webpack.DefinePlugin({ 'process.env.NODE_ENV': '"production"' }) }

运行代码时:

set NODE_ENV=production && node app

NPM 包:

https://www.npmjs.com/package/envify

电源外壳:

$env:NODE_ENV="production"

我想我只是感到困惑,因为默认情况下我目前设置了大约 4 个。这些究竟是如何相互作用的?他们都指的是同一个变量吗?我应该只吃其中之一吗?哪些会覆盖其他的?

如果只有一个点来设置它,我真的更喜欢,因为似乎每个模块都允许您指定它,因此,我对它的实际设置位置感到困惑。此外,是否也可以在客户端访问此标志,还是仅在服务器端访问?

最佳答案

在您指定的场景中,NODE_ENV环境变量将由实际执行代码的进程初始化。请参阅以下摘录自 environment variable wikipedia .

In all Unix and Unix-like systems, each process has its own separate set of environment variables. By default, when a process is created, it inherits a duplicate environment of its parent process, except for explicit changes made by the parent when it creates the child. At the API level, these changes must be done between running fork and exec. Alternatively, from command shells such as bash, a user can change environment variables for a particular command invocation by indirectly invoking it via env or using the ENVIRONMENT_VARIABLE=VALUE <command> notation. All Unix operating system flavors, DOS, and Windows have environment variables; however, they do not all use the same variable names. A running program can access the values of environment variables for configuration purposes.

因此,如果您要使用 pm2 运行您的代码, 然后 pm2实际上会分配 NODE_ENV执行应用程序之前的环境变量。它使用 JSON file for options您可以在其中使用 env 指定环境变量属性(property)。

简而言之,所有设置你的方式NODE_ENV或多或少是等效的,归结为谁启动了您的流程。

由于环境变量是机器本地的(环境),它们是在本地设置的,不能由客户端设置。

关于javascript - 对设置 NODE_ENV 的方式有多少感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37797759/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com