npm - yarn 测试因 jasmine-ts yargs 依赖性而失败

标签 npm node-modules yarnpkg yargs jasmine-ts

我正在运行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,它在测试时也给出了相同的错误,所以我希望我只是在这里遗漏了一些简单的东西。任何帮助表示赞赏。

最佳答案

我也遇到了同样的问题,但在我的例子中,yargsjest-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/

相关文章:

typescript :esnext 编译器选项会破坏从外部库导入的 es6

sass - 在 node-sass@4.9.3 安装后脚本失败

git - 如何为每个项目设置 yarn 版本标签前缀和版本git消息?

Node.js - nodemon vs node - 开发与生产

node.js - NPM 中以下行的含义是什么?

javascript - 如何在 Laravel 中导入 Progressbar.js?

minify - 我应该缩小 node_modules 还是应该使用为在客户端部署提供的缩小版本?

npm - yarn 因 node-gyp 错误而失败

node.js - 通过 YARN 添加生成器-jhipster 时出错

node.js - NPM 完全忽略全局安装的软件包