WebPack Uncaught ReferenceError:未定义进程

时间:2018-02-08 10:09:10

标签: angular webpack

我在Angular5应用程序中遇到username__iexact错误 - 没有CLI。我理解Webpack DefinePlugin应该创建一些全局变量,但我已经配置了它。我不确定为什么这个过程不可用 - 我已经在REPL中证实了这一点。

我是Webpack的新手,不知道从哪里开始寻找。有人可以帮忙吗?

Webpack配置

Uncaught ReferenceError: process is not defined

2 个答案:

答案 0 :(得分:1)

我在DefinePlugin条目中从未见过process.env.xxx,您可以尝试删除该部分:

    'ENV': JSON.stringify(METADATA.ENV),
    'NODE_ENV': JSON.stringify(METADATA.ENV),
    'HMR': METADATA.HMR,
    'API_URL': JSON.stringify(METADATA.API_URL)

您需要为您的应用全局定义这些变量,还是只为您的构建定义?

如果它仅适用于您的构建,您不需要DefinePlugin,只需在环境中定义变量,如下所示:

    process.env.ENV = JSON.stringify(METADATA.ENV);
    process.env.NODE_ENV = JSON.stringify(METADATA.ENV);
    process.env.HMR: METADATA.HMR;
    process.env.API_URL: JSON.stringify(METADATA.API_URL);

更新

如果您希望将这些值提供给您的应用,我们已经完成的一件事是使用StringReplaceWebpackPlugin将字符串持有者替换为目标环境的实际值

   {
      test: /\.js$/,
      use: [
        {
          loader: StringReplacePlugin.replace({
            replacements: {
              pattern: /_API_URL_/ig,
              replacement: function (match, p1, offset, string) {
                return getApiUrlForEnv(process.env.NODE_ENV);  // implement this
              }
            };
          })
        },
        '@ngtools/webpack'
      ]
    }

答案 1 :(得分:0)

我在webpack配置中解决了这个问题,方法是将一个简单的过程添加为true,如:

 node: {
  global: true,
  crypto: 'empty',
  process: true,
  module: false,
  clearImmediate: false,
  setImmediate: false,
  fs: 'empty'
}