在我将其更新为Angular6并将@ngtools/webpack
从“ 6.0.0-beta.8”更新为“ 6.1.2”之后,我发现 hostReplacementPaths 选项不再起作用。
通常它会替换正确的环境文件:
new AngularCompilerPlugin({
...
hostReplacementPaths: {
'environments/environment.ts': environmentFiles[NODE_ENV]
},
...
})
但是现在没有。
我对@ ngtools / webpack进行了深度调试,发现normalize
在这里起作用
https://github.com/angular/angular-cli/blob/master/packages/ngtools/webpack/src/virtual_file_system_decorator.ts#L188
不起作用
仍然找不到它出了什么问题。 也许有人已经解决了这个问题?
在angular-cli仓库中创建了一个问题-https://github.com/angular/angular-cli/issues/11801
答案 0 :(得分:2)
如您的问题中所述,这是版本6.1.0-rc.2
的一个已知错误,在推出补丁之前,您应降级至6.1.0-rc.1
。
答案 1 :(得分:2)
此PR很快就会解决-https://github.com/angular/angular-cli/pull/11809
如James所述,此提交https://github.com/angular/angular-cli/commit/86a62adbe8faeb4628296d5d6915c54e6dbfd85b
在6.1.0-rc.2
中引入了一个错误。
路径解析不正确。
之前:
const normalizedFrom = normalize(from);
const normalizedWith = normalize(this._options.hostReplacementPaths[from]);
建议的解决方法:
const normalizedFrom = resolve(normalize(this._basePath), normalize(from));
const normalizedWith = resolve(
normalize(this._basePath),
normalize(this._options.hostReplacementPaths[from]),
);