3

在我更新到 Angular6 并@ngtools/webpack从“6.0.0-beta.8”更新到“6.1.2”后,我发现hostReplacementPaths选项不再起作用。

通常它会替换正确的 env 文件:

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 不起作用

这个 https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/core/src/virtual-fs/path.ts#L199

仍然找不到它出了什么问题。也许有人已经解决了这个问题?

在 angular-cli repo 中创建了一个问题 - https://github.com/angular/angular-cli/issues/11801

4

2 回答 2

2

如您的问题中所述,这是版本的已知错误,6.1.0-rc.2在推出补丁之前,您应该降级回6.1.0-rc.1.

于 2018-08-07T22:52:52.820 回答
1

看起来这个 PR 很快就会修复 - https://github.com/angular/angular-cli/pull/11809

6.1.0-rc.2正如詹姆斯所提到的,这个提交 引入了一个错误: https ://github.com/angular/angular-cli/commit/86a62adbe8faeb4628296d5d6915c54e6dbfd85b

路径未正确解析。

前:

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]),
);
于 2018-08-08T06:54:26.087 回答