Angular 忽略 AOT 构建中的文件加载器

Angular ignores file-loader in AOT build

我目前正在尝试在 Angular 中建立一个文档网站。文档将以 markdown 编写,并通过 ngx-markdown 插件显示。在 JIT 构建上一切正常,但 AOT 构建总是删除降价文件。

这是我导入文件的方式:

import usageNavbar from '!!raw-loader!./content/usage-navbar.md';

[...]
{
  title: 'Installation',
  text: usageNavbar
}
[...]

我试过只使用 raw-loader 插件,但这只会在 AOT 上加载 null:

{title: "Installation", text: null}

然后我尝试设置 webpacks 文件加载器,它将在构建 AOT 时输出 void 0:

{title: "Installation", text: void 0}

但是 JIT 看起来像这样:

{
  title: 'Installation',
  text: _raw_loader_content_usage_navbar_md__WEBPACK_IMPORTED_MODULE_3__["default"]
}

并在其 dist 中包含此文件夹:

没有错误消息或任何它只是完全删除了任何存在的降价文件的证据。

我认为 this 是 Angular 使用的 webpack 配置,但没有任何迹象表明会发生这种情况。
还有一个 this 问题不是很有帮助。

这是我与 @angular-builders/custom-webpack 插件一起使用的 webpack 配置:

module.exports = {
  module: {
    rules: [
      {
        test: /\.md$/i,
        loader: 'file-loader',
        options: {
          name: `[name][hash].[ext]`,
          outputPath: 'docs/',
          emitFile: true
        }
      }
    ]
  }
};

angular.json:

[...]
"customWebpackConfig": {
  "path": "./extra-webpack.config.js",
  "mergeStrategies": {
    "module.rules": "prepend"
  }
}
[...]

我正在使用 Angular 8.

问题实际上是我传递数据的方式。

我通过 .forRoot() 方法传递它,该方法将标记设置为该值。 Angular 没有识别它(我认为),并在编译时将其删除。

我通过直接设置令牌修复了它。