20

我在一个全新的 Angular 10 项目的资产文件夹中有一个基本的 JSON 文件。
Angular CLI:10.0.1 节点:14.5.0 操作系统:win32 x64 TSC 版本 3.9.5。在我的 tsconfig.json 我有

  "compilerOptions": {
    "module": "commonjs",
    "resolveJsonModule": true,
    "esModuleInterop": true
  }

我已经多次重新启动 vscode,并尝试从 vscode 终端、powershell 窗口和 bash 终端进行编译,都返回相同的消息:“考虑使用 '--resolveJsonModule' 导入带有 '.json' 扩展名的模块”。我尝试使用不同选项的多种组合进行编译。在这一点上,我想知道是否应该重新启动这个项目并简单地降级我的 Angular 版本?

4

4 回答 4

21

在 Angular 版本 10 中,我们有 3 个“tsconfig”文件。

您必须在“compilerOptions”内的“tsconfig.app.json”文件中添加“resolveJsonModule”和“esModuleInterop”选项。

该文件应如下所示:

{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "resolveJsonModule": true,
    "esModuleInterop": true,
    "outDir": "./out-tsc/app",
    "types": []
  },
  "files": [
    "src/main.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}
于 2020-08-07T02:26:48.087 回答
14

如果有人在 Angular 11 中有类似的东西:

我收到了这个额外的错误信息:

找不到模块“nameOfMyJsonFile.json”。考虑使用“--resolveJsonModule”导入扩展名为“.json”的模块。

所以我不得不将resolveJsonModule添加到compilerOptions内的“tsconfig.json”文件中,而不是tsconfig.app.json中。

 {
      "compileOnSave": false,
      "compilerOptions": {
        "baseUrl": "./",
        "outDir": "./dist/out-tsc",
        "resolveJsonModule": true,
        "sourceMap": true,
        "declaration": false,
        "downlevelIteration": true,
        "experimentalDecorators": true,
        "moduleResolution": "node",
        "importHelpers": true,
        "target": "es2015",
        "module": "es2020",
        "lib": [
          "es2018",
          "dom"
        ]
      }
    }
于 2020-12-30T14:12:16.310 回答
2

我在运行 Ionic 5 (Angular 12) 测试时遇到了同样的问题。解决了它:

import * as SomeJsonObjectName from './assets/someObject.json

但只有在添加之后

"resolveJsonModule": true,

到tsconfig.json 的compilerOptions

于 2021-07-14T19:42:45.110 回答
0

我发现 Melvin Gruschow 的问题的一种解决方案(即使使用“resolveJsonModule”和“esModuleInterop”也会发生错误)是在“app”目录中名为“json-typings.d.ts”的文件中声明 json 模块。这样:

declare module "*.json" {
    const value: any;
    export default value;
}
于 2021-05-22T22:35:32.247 回答