Javascript SyntaxError:在TypeScript中使用Aurelia运行jest测试时出现意外标记

Javascript SyntaxError:在TypeScript中使用Aurelia运行jest测试时出现意外标记,javascript,typescript,unit-testing,jestjs,aurelia,Javascript,Typescript,Unit Testing,Jestjs,Aurelia,刚刚使用Aurelia cli创建了一个新的TypeScript Aurelia项目。 已安装引导,并使用导入将引导css包含在app.ts中 import 'bootstrap/dist/css/bootstrap.min.css'; import '../../static/assets/css/app.scss'; import { routes } from './routes'; interface IApp { message: string; } export class

刚刚使用Aurelia cli创建了一个新的TypeScript Aurelia项目。 已安装引导,并使用导入将引导css包含在app.ts中

import 'bootstrap/dist/css/bootstrap.min.css';
import '../../static/assets/css/app.scss';
import { routes } from './routes';

interface IApp {
  message: string;
}

export class App implements IApp{
  message = 'Hello World!';
}
现在,当我运行测试时,我得到错误意外标记,如下所示

yarn test

# and the output contains

yarn run v1.12.3
$ nps test
nps is executing `test` : nps test.jest
nps is executing `test.jest` : node node_modules/rimraf/bin.js test/coverage-jest && jest
ts-jest[config] (WARN) TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` option):
message TS151001: If you have issues related to imports, you should consider setting `esModuleInterop` to `true` in your TypeScript configuration file (usually `tsconfig.json`). See https://blogs.msdn.microsoft.com/typescript/2018/01/31/announcing-typescript-2-7/#easier-ecmascript-module-interoperability for more information.
 FAIL  test/unit/app.spec.ts
  ● Test suite failed to run

    Jest encountered an unexpected token

    This usually means that you are trying to import a file which Jest cannot parse, e.g. it's not plain JavaScript.

    By default, if Jest sees a Babel config, it will use that to transform your files, ignoring "node_modules".

    Here's what you can do:
     • To hav`enter code here`e some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.
     • If you need a custom transformation specify a "transform" option in your config.
     • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option.

SyntaxError: Unexpected token :



  at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:403:17)
  at Object.<anonymous> (src/home/app.ts:163:1)
纱线测试
#并且输出包含
纱线运行v1.12.3
$nps测试
nps正在执行'test':nps test.jest
nps正在执行“test.jest”:node node_modules/rimraf/bin.js test/coverage jest&&jest
ts jest[config](警告)类型脚本诊断(使用`[jest config].globals.ts jest.diagnostics`选项自定义):
消息TS151001:如果您有与导入有关的问题,则应考虑在“类型”配置文件(通常为“TSCONFIG.JSON”)中设置“EsMeuleEndoP”为“真”。看见https://blogs.msdn.microsoft.com/typescript/2018/01/31/announcing-typescript-2-7/#easier-ecmascript模块互操作性了解更多信息。
失败测试/装置/应用规范ts
● 测试套件无法运行
Jest遇到了意外的标记
这通常意味着您正试图导入Jest无法解析的文件,例如,它不是纯JavaScript。
默认情况下,如果Jest看到一个Babel配置,它将使用它来转换您的文件,忽略“node_modules”。
以下是您可以做的:
•要在此处输入代码以转换某些“节点模块”文件,您可以在配置中指定自定义“transformIgnorePatterns”。
•如果需要自定义转换,请在配置中指定“转换”选项。
•如果您只是想模拟您的非JS模块(例如二进制资产),您可以使用“moduleNameMapper”配置选项将其剔除。
SyntaxError:意外标记:
在ScriptTransformer.\u transformAndBuildScript(节点\u模块/jest运行时/build/script\u transformer.js:403:17)
反对。(src/home/app.ts:163:1)
我在app.ts中对import bootstrap.css行进行了注释,一切正常

我是否缺少一些jest配置,以允许我在.ts组件中使用css导入

下面是package.json中的jest部分

"jest": {
    "verbose": true,
    "roots": [
      "<rootDir>/test"
    ],
    "modulePaths": [
      "<rootDir>/src",
      "<rootDir>/node_modules"
    ],
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "transform": {
      "^.+\\.ts$": "ts-jest"
    },
    "testRegex": "\\.spec\\.(ts|js)$",
    "testPathIgnorePatterns": [
      "build",
      "dist",
      "sample"
    ],
    "setupFiles": [
      "<rootDir>/test/jest-pretest.ts"
    ],
    "testEnvironment": "node",
    "collectCoverage": true,
    "collectCoverageFrom": [
      "src/**/*.{js,ts}",
      "!**/*.spec.{js,ts}",
      "!**/node_modules/**",
      "!**/test/**"
    ],
    "coverageDirectory": "<rootDir>/test/coverage-jest",
    "coverageReporters": [
      "json",
      "lcov",
      "text",
      "html",
      "clover"
    ]

  },
“开玩笑”:{
“详细”:正确,
“根”:[
“/测试”
],
“模块路径”:[
“/src”,
“/node\u模块”
],
“moduleFileExtensions”:[
“js”,
“json”,
“ts”
],
“转变”:{
“^.+\\.ts$”:“ts笑话”
},
“testRegex”:“\\.spec\\.(ts|js)$”,
“testPathIgnorePatterns”:[
“建造”,
“区”,
“样本”
],
“设置文件”:[
“/test/jest pretest.ts”
],
“测试环境”:“节点”,
“覆盖范围”:正确,
“CollectionCoverage from”:[
“src/***.{js,ts}”,
“!***/*.spec.{js,ts}”,
“!**/node_modules/**”,
“!**/test/**”
],
“coverage目录”:“/test/coverage jest”,
“搬运工”:[
“json”,
“lcov”,
“文本”,
“html”,
“三叶草”
]
},

我遇到了同样的错误。通过将tsconfig.json中的模块编译器选项从“esnext”更改为“commonjs”,我解决了这个问题

你在使用webpack吗?最近有一个关于jsdom jest和Aurelia的博客。也许它能帮助你解决你的问题?