process.env 抛出 Uncaught ReferenceError 但 process.env.NODE_ENV 不会

process.env throws Uncaught ReferenceError but process.env.NODE_ENV does not

在我的客户端 javascript 文件中,如果我 运行 以下我没有收到错误:

console.log(process.env.NODE_ENV); // outputs development or production

但是,如果我 运行 以下内容,则会出现错误:

console.log(process.env) // Uncaught ReferenceError: process is not defined

为什么会这样?使用 Webpack 5 进行打包。

因为您使用的捆绑器将 process.env.NODE_ENV 替换为另一个值。 对于 Webpack,它是 DefinePlugin doing the dirty work (and setting the Webpack --mode option automatically adds the plugin); for e.g. esbuild it's define.

您生成的捆绑 JavaScript 根本不会有 process.env.NODE_ENV,只有静态字符串 "production""development”。但是,只有 process.env 会不会被替换(除非这样配置),所以你会收到一个引用错误。