摩卡和 ts-node 提供'Unsupported Args'



在我的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_modulesmochabinmocha --require ts-node/register "./test/**/*.ts",它也会失败,并显示相同的消息。如果我删除--require ts-node/register,它会运行,但在对import语句运行测试时失败,因为我的测试文件是Typescript文件。

如何使摩卡与ts节点一起工作?

我的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"
}

我无法找到如何使用命令行解决问题的答案,但我通过将选项移动到package.json 中来规避这个问题

"scripts": {
"test": "mocha"
},
"mocha": {
"extension": ["ts"],
"spec": "test/**/*.ts",
"require": "ts-node/register"
}

更新:我发现了错误。我把一些没有测试的代码移到了有测试。记录器是在main.ts文件中定义的,该文件中运行的一些代码没有受到任何保护。事实上,错误Unsupported Args是我自己的错误消息。

引用winston记录器的行为导致main.ts中的代码运行。由于某种原因,现在mocha选项在package.json中,即使记录器仍然被引用,这个错误也不会发生,我觉得这很困惑。我不知道为什么这些选项是直接在命令行中,还是在package.json中会导致这样的行为差异。不管怎样,所学到的教训永远不会被引用到你的主"运行";单元

最新更新