我正在运行yarn test
来运行我的测试。我必须事先更新 package.json
文件中的某些版本,因此我删除了 yarn.lock
文件。在删除yarn.lock
文件之前,测试顺利通过。现在,测试失败并出现以下错误:
TypeError: shim$1.Parser.looksLikeNumber is not a function
at Object.Yargs.self._parsePositionalNumbers (/Users/me/dev/test-app/node_modules/jasmine-ts/node_modules/yargs/build/index.cjs:2804:31)
我的package.json
包括:
"jasmine-ts": "^0.3.0"
旧的yarn.lock
文件看起来像这样:
jasmine-ts@^0.3.0:
version: "0.3.0"
resolved: (...)
integrity: (...)
dependencies:
yargs: "^8.0.2"
新的 yarn.lock
文件如下所示:
jasmine-ts@^0.3.0:
version "0.3.3"
resolved: (...)
integrity: (...)
dependencies:
yargs "^16.2.0"
我相信 jasmine-ts
显示的 yargs
版本不应该给我这个错误。我有办法解决这个问题吗?或者这是 jasmine-ts 中的一个错误?最新版本是0.4.0
,它在测试时也给出了相同的错误,所以我希望我只是在这里遗漏了一些简单的东西。任何帮助表示赞赏。
最佳答案
我也遇到了同样的问题,但在我的例子中,yargs
是 jest-cli
的子依赖项
在我寻找有关此问题的线索时发现了您的问题,并且感谢您的版本指针,我能够解决此问题。
我将 yargs
版本 13.3.2
添加到解决方案,它解决了该问题。
package.json
"resolutions": {
"yargs": "^13.3.2"
}
yargs
也可能是项目中其他模块的子依赖项,如果您知道某个版本运行良好,请将其添加到分辨率中。否则,请使用 13.3.2
,因为它不会抛出此 TypeError: shim$1.Parser.looksLikeNumber is not a function
。
注意:- 您不会删除以前的版本,解决方案只会将您的子依赖项固定到指定版本。
关于决议的好读:- https://medium.com/learnwithrahul/understanding-npm-dependency-resolution-84a24180901b
关于npm - yarn 测试因 jasmine-ts yargs 依赖性而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68121382/