繁体   English   中英

当 Mocha 和 IntellIJ IDEA 运行不雅时,如何为 TSNode 传递单独的 TypeScript 配置?

[英]How to pass separate TypeScript config for TSNode when it has being indecency running by Mocha & IntellIJ IDEA?

虽然 TS-Node开始支持 ECMAScript 模块,但它有很多限制,下面的例子:

import { assert as Assert } from "chai";


describe("firstTest", (): void => {

  it("", (): void => {
    Assert.isTrue(true);
  });

});

不适用于下一个设置:

tsconfig.json

{
  "compilerOptions": {

    "target": "ES2020",
    "module": "ES2020",
    "moduleResolution": "node",

    "strict": true,
    "allowSyntheticDefaultImports": true,
    "experimentalDecorators": true,

    "skipLibCheck": true,

    "baseUrl": "./",
    "paths": {},

    "noUnusedParameters": true,
    "noImplicitReturns": true
  }
}

.mocharc.yaml

extension:
  - ts

spec: "**/*.test.ts"

require:
  - ts-node/register
  - tsconfig-paths/register

错误:

import { assert as Assert } from "chai";
^^^^^^

SyntaxError: Cannot use import statement outside a module

我需要 ECMAScript 模块,因为 Webpack 动态加载不适用于 CommonJS 模块 因此,概念解决方案是为 TSNode 创建额外的tsconfig.json或通过控制台传递模块类型。 已经记录了如何为 TSNode 执行此操作,但在这里我不直接执行 TSNode - 我通过 IntelliJ IDEA 启动 Mocha:

在此处输入图像描述

IntelliJ IDEA 和我想这个系列的所有 IDE 包括 WebStorm 都会生成以下命令(添加了换行符):

"C:\Program Files\nodejs\node.exe" 
"D:\XXX\MyProject\node_modules\mocha\bin\mocha" --require ts-node/register --ui bdd --reporter C:\Users\XXX\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\203.7148.57\plugins\NodeJS\js\mocha-intellij\lib\mochaIntellijReporter.js 
"D:\XXX\MyProject\Test\Test.test.ts" --grep "^firstTest "

现在如何设置CommonJS模块类型?

根据ts-node的文档(搜索 IntelliJ ),您可以创建一个替代 tsconfig.json (包含选项"module": "CommonJS" )并使用环境变量TS_NODE_PROJECT为 Mocha 测试强制执行它。 在与您的 Mocha 测试对应的配置中,在Environment variables部分中,将此变量设置为此替代 tsconfig.json 的路径名。 请注意,多个 tsconfig.json 文件可以使用一个通用的“基本”文件并扩展/部分覆盖它(请参阅)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM