未捕获的语法错误:运行 karma 测试时无法在模块外部使用 import 语句 + 3 个 TCONFIG 文件之间的差异

问题描述 投票:0回答:1

尝试运行我的规范文件时,我在控制台中收到此错误:

Uncaught SyntaxError: Cannot use import statement outside a module

我的 tsconfig.spec 看起来像这样:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
  "outDir": "../outDir/spec",
  "baseUrl": "",
  "types": [
    "jasmine",
    "node"
]
},
 "files": [
"test.ts",
"polyfills.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
],
//
"exclude": ["node_modules"]
}

我的 tsconfig.app 看起来像这样:

    {
    "extends": "../tsconfig.json",
    "angularCompilerOptions": {
    "enableIvy": true
    },
    "compilerOptions": {
    "outDir": "../outDir/app",
    "baseUrl": "",
    "types": [
      "node"
    ]
    },
    "files": [
    "main.ts",
    "polyfills.ts"
    ],
    "exclude": [
    "test.ts",
    "**/*.spec.ts"
     ]
     }

This is my tsconfig.json:

    {
    "compileOnSave": false,
    "compilerOptions": {
    "importHelpers": true,
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "resolveJsonModule":true,
    "target": "es2022",
    "allowSyntheticDefaultImports": true,
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2022",
      "dom"
    ],

    "module": "es2022",
    "baseUrl": "./",
    "paths": {
      "tslib": ["node_modules/tslib/tslib.d.ts"]
    }
    },
    "include": [
    "src/app/**/*.component.ts",
    "src/app/**/**/*.component.ts"
    ],
    "exclude": [
    "node_modules",
    "src/app/**/*.spec.ts",
    "src/app/**/**/*.spec.ts"
    ],
    }

我尝试将“type”:“module”添加到我的package.json中,但我不得不将其取消,因为它不再正确读取我的karma.conf。我还在 stackoverflow 上看到了降级 Chart.js 的解决方案,但我做了,但它仍然不起作用。我不知道还能尝试什么。 另外,我们如何确定 3 个 tsconfig 文件中的文件、包含和排除内容?我一直在尝试这些选项,但我仍然无法确定什么会去哪里。我将规范和组件文件放入 karma.conf 的文件字段中。我还共享了 2/3 的 tsconfig 文件,最后一个文件是 tsconfig.json,我包含了我的 component.ts 文件并排除了我的 spec.ts 文件。这是正确的吗?

angular typescript karma-jasmine tsconfig karma-typescript
1个回答
0
投票

您需要从底座

includes
上移除
files
tsconfig.json
。该文件旨在包含您正在处理的任何类型的 TypeScript 代码的基本编译器设置。其他配置文件(如
tsconfig.app.json
tsconfig.spec.json
)从此基本配置扩展而来。

© www.soinside.com 2019 - 2024. All rights reserved.