将 webpack 的 `require.context` 与 angular cli 和 ivy 结合使用

Using webpack's `require.context` with angular cli and ivy

我们正在尝试将未使用 angular cli(直接使用 webpack 和自定义服务器)构建的 angular 应用程序移植到带有 cli 的 angular 9。升级到 angular 9 本身效果很好。在我们开始使用 angular cli 之后,我们遇到了几个问题。

现在唯一剩下的就是构建似乎根本没有接收 webpack 的 require.context 调用。我们在任何地方都使用它来动态地查找和注册我们的组件,它以前工作得很好,只使用 @types/webpack-env 包。但是现在,在 vscode 中没有语法错误,但是当我们尝试 运行 ng serve 时,它会为每个具有 require.context 的文件产生以下错误:

ERROR in src/app/shared/shared.module.ts:22:29 - error TS2339: Property 'context' does not exist on type 'NodeRequire'.

const requireFile = require.context(

整个构建失败。我猜这在某种程度上是因为常春藤,但我不知道如何解决这个问题,我到处寻找但没有找到解决方案。我尝试在依赖项(而不是开发依赖项)中安装 @types/webpack-env,但没有成功。我不确定为什么会这样,我认为 webpack 会正常工作并在 ivy 开始工作之前接听这些电话。

在 tsconfig.app.json 中有这个:

"types": []

哪个禁用了此处所述的自动包含:https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types

删除整个 types 部分(或添加 "types": ["node", "webpack-env"])解决了问题。