一尘不染

在Mocha中为ts节点覆盖tsconfig.json

node.js

tsconfig.json从mocha调用时,是否可以覆盖使用哪个ts节点?

我的主要tsconfig.json包含"module": "es2015",但我只想"module": "commonjs"用于ts-node。

我试过了

mocha --compilers ts:ts-node/register,tsx:ts-node/register \
    --compilerOptions '{"module":"commonjs"}' \
    --require ts-node/register test/**/*.spec.ts*

但它不起作用:

SyntaxError: Unexpected token import
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Module.m._compile (/usr/lib/node_modules/ts-node/src/index.ts:406:23)
    at Module._extensions..js (module.js:422:10)
    at Object.require.extensions.(anonymous function) [as .tsx] (/usr/lib/node_modules/ts-node/src/index.ts:409:12)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at /usr/lib/node_modules/mocha/lib/mocha.js:222:27
    at Array.forEach (native)
    at Mocha.loadFiles (/usr/lib/node_modules/mocha/lib/mocha.js:219:14)
    at Mocha.run (/usr/lib/node_modules/mocha/lib/mocha.js:487:10)
    at Object.<anonymous> (/usr/lib/node_modules/mocha/bin/_mocha:458:18)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:146:18)
    at node.js:404:3

阅读 354

收藏
2020-07-07

共1个答案

一尘不染

您需要通过TS_NODE_COMPILER_OPTIONS环境变量设置配置

UNIX计算机上的示例代码:

TS_NODE_COMPILER_OPTIONS='{"module":"commonjs"}' \
mocha --require ts-node/register 'test/**/*.spec.{ts,tsx}'

存储库文档中提取的说明


CLI和程序选项

用括号表示的环境变量。

  • -T, --transpile-only使用TypeScript的更快的transpileModule(TS_NODE_TRANSPILE_ONLY,默认值:false)
  • -I, --ignore [pattern]覆盖路径模式以跳过编译(TS_NODE_IGNORE,默认值:/ node_modules /)
  • -P, --project [path]TypeScript JSON项目文件的路径(TS_NODE_PROJECT
  • -C, --compiler [name]指定自定义的TypeScript编译器(TS_NODE_COMPILER,默认值:打字稿)
  • -D, --ignore-diagnostics [code]通过诊断代码(TS_NODE_IGNORE_DIAGNOSTICS)忽略TypeScript警告
  • -O, --compiler-options [opts]JSON对象与编译器选项合并(TS_NODE_COMPILER_OPTIONS
  • --files在启动时从tsconfig.json加载文件(TS_NODE_FILES,默认值:false)
  • --pretty使用漂亮的诊断格式化程序(TS_NODE_PRETTY,默认值:false)
  • --skip-project跳过项目配置解析和加载(TS_NODE_SKIP_PROJECT,默认值:false)
  • --skip-ignore跳过忽略检查(TS_NODE_SKIP_IGNORE,默认值:false)
  • --log-error记录类型错误而不是退出进程(TS_NODE_LOG_ERROR,默认值:false)
  • --prefer-ts-exts重新排序文件扩展名,以便首选TypeScript导入(TS_NODE_PREFER_TS_EXTS,默认值:false)
2020-07-07