在Node.js环境中精简了process.env,使其无法使用

在Node.js环境中精简了process.env,使其无法使用,node.js,Node.js,我想在Node.js环境中使用这个包(基本上是用于ES6+的UglifyJS)。我正在使用webpack和terser webpack plugin和以下选项: optimization: { minimizer: [ new TerserPlugin({ parallel: true, terserOptions: { ecma: 6, toplevel: true, keep_cl

我想在Node.js环境中使用这个包(基本上是用于ES6+的UglifyJS)。我正在使用
webpack
terser webpack plugin
和以下选项:

optimization: {
    minimizer: [
      new TerserPlugin({
        parallel: true,
        terserOptions: {
          ecma: 6,
          toplevel: true,
          keep_classnames: false,
          keep_fnames: false,
          mangle: {
            properties: true
          }
        },
      }),
    ]
  },
当将
mangle.properties
设置为
true
时,插件会将
process.env
设置为类似
r.es
,因此在尝试使用
r.es['NODE\u env']
或类似代码访问时会破坏它。查看terser生成的以下代码:

"use strict";
(function(t) {
    Object.defineProperty(e, "l", {
        h: !0
    });
    const n = i(1)
      , s = i(45)
      , r = i(78);
    e.ts = (t=>parseInt(r.es[t] || "")); // r.es should be r.env or process.env
    let o = e.ts("LOG_LEVEL");
    isNaN(o) && (o = n.ss.ns);
    class c {
    }
    c.rs = e.ts("API_PORT") || 9e3,
    c.os = r.es.cs || "0.0.0.0",
    c.us = "YES" === r.es.hs,
    c.ls = o,
    c.fs = e.ts("LOG_ROWS_TO_KEEP") || 1e5,
    c.ys = s.join(c.ds, "build"),
    e.a = c
}
).call(this, "/")
我可以在将
mangle.properties
设置为
false
时修复此问题,但我确实希望将其打开

导入或要求
过程
是我尝试的第一件事,但是terser的输出没有任何变化

const process = require('process');

有什么想法吗?

我最初认为保留
过程就足够了,但事实证明,没有

相反,我想到了这个:

mangle: {
  properties: {
    keep_quoted: true,
    reserved: [ 'process', 'env' ],
  }
}

这有点像黑客,因为它还禁用了mangling
foo.env

我用
['process'、'env'、'process.env']
尝试过,但是它不起作用。你认为我应该在简短的github页面上打开一个问题吗?@dislick抱歉,我说得太快了。请参阅编辑(看起来不可能完全保护“process.env”,但有一个可以接受的解决方法)。