我在Angular5应用程序中遇到username__iexact
错误 - 没有CLI。我理解Webpack DefinePlugin应该创建一些全局变量,但我已经配置了它。我不确定为什么这个过程不可用 - 我已经在REPL中证实了这一点。
我是Webpack的新手,不知道从哪里开始寻找。有人可以帮忙吗?
Webpack配置
Uncaught ReferenceError: process is not defined
答案 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'
}