工具/库版本:
"ts-mocha": "^8.0.0",
"ts-node": "^10.3.0",
"chai": "^4.3.4",
代码:
expect(wrapper.find(MyListItem)).to.have.length(3);
指令:
ts-mocha tests/**/*.tsx -r unitTestSetup.ts
我的打字脚本编译器选项:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": true,
"outDir": "./lib",
"strict": true,
"esModuleInterop": true,
},
错误:
tests/index.spec.tsx:41:10 - error TS2695: Left side of comma operator is unused and has no side effects.
41 (0, chai_1.expect)(wrapper.find(MyListItem)).to.have.length(3);
这可能是由于没有安装ts-mocha的可选依赖项造成的。(tsconfig-paths
)
有没有比在ts-mocha包上执行npm install --force
命令来强制它安装tsconfig-paths更好的方法来解决这个问题呢?(我提供了答案)
3条答案
按热度按时间irtuqstp1#
我在使用ts-node的时候遇到了同样的问题,原因是ES模块包感染了代码,参见here。
有些人试图切换到ES模块,如here,但这对我不起作用,因为我仍然有大部分commonjs模块。
我的解决方案是使用ES模块去掉npm包(即在
package.json
中包含"type": "module"
)。ffvjumwh2#
我通过在
package.json
文件中创建一个'fix-ts-mocha'脚本修复了这个问题:我在
npm install
之后(或每次ts-mocha
更新时)运行一次。5sxhfpxr3#
终于找到了解决方案。(尝试了
mocha
和ts-mocha
,修复对两者都有效)。当我在ts配置文件中设置
"module": "ESNext"
时,它对我有效和在
package.json
中的"type": "module",
。