在我的package.json中,我定义了我的测试脚本:
"scripts": {
"test": "mocha --require ts-node/register ./test/**/*.ts",
"build": "npx tsc"
}当我运行npm test时,我得到了结果:
> mocha --require ts-node/register ./test/**/*.ts
error: Unsupported Args: --require ts-node/register ./test/**/*.ts不知何故,这似乎是命令交互。即使我手动运行node .\node_modules\mocha\bin\mocha --require ts-node/register "./test/**/*.ts",它也会失败,并显示相同的消息。如果我删除了--require ts-node/register,它会运行,但在import语句上运行测试时会失败,因为我的测试文件是Typescript文件。
如何让mocha与ts-node一起工作?
发布于 2021-11-16 14:27:43
我无法找到如何使用命令行解决这个问题的答案,但我通过将选项移到package.json中绕过了这个问题
"scripts": {
"test": "mocha"
},
"mocha": {
"extension": ["ts"],
"spec": "test/**/*.ts",
"require": "ts-node/register"
}更新:我发现了错误。我把一些没有测试的代码移到了有测试的地方。日志记录器是在一个main.ts文件中定义的,该文件包含一些在没有任何保护的情况下运行的代码。事实上,error Unsupported Args是我自己的错误消息。
引用winston logger的行为导致main.ts中的代码运行。由于某些原因,既然mocha选项在package.json中,那么即使记录器仍然被引用,这个错误也不会发生,这让我感到困惑。我不确定为什么选项是直接在命令行中,还是在package.json中会导致如此大的行为差异。无论如何,学到的教训永远不会引用到你的主要“运行”模块中。
发布于 2021-11-16 15:23:45
我的package.json文件在scripts中包含它
"scripts": {
"test": "./node_modules/mocha/bin/mocha -r ts-node/register tests/test.ts"
},在此之后,我可以运行npm test,一切似乎都很好。
devDependencies中的版本
"devDependencies": {
"@types/chai-http": "^4.2.0",
"@types/expect": "^24.3.0",
"@types/mocha": "^9.0.0",
"@types/chai": "^4.2.18",
"@types/node": "14.14.30",
"chai": "^4.3.4",
"mocha": "^9.1.3",
"ts-node": "^9.1.1",
"typescript": "^4.4.4"
}https://stackoverflow.com/questions/69989860
复制相似问题