【问题标题】:projects.map is not a function for jest-cliprojects.map 不是 jest-cli 的功能
【发布时间】:2017-10-05 20:42:27
【问题描述】:

我正在编写一个反应应用程序并开玩笑地对其进行测试。但是,每当我从终端运行 jest 命令时,我都会保留此错误。

TypeError: projects.map is not a function
    at Object.<anonymous> (/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:172:28)
    at next (native)
    at step (/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:18:30)
    at /Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:34:14
    at Object.<anonymous> (/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:15:12)
    at Object.module.exports [as runCLI] (/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:2 03:17)
    at Object.run (/Users/DavidHu/.nvm/versions/node/v6.2.1/lib/node_modules/jest-cli/build/cli/index.js:42:17)
    at Object.<anonymous> (/Users/DavidHu/.nvm/versions/node/v6.2.1/lib/node_modules/jest-cli/bin/jest.js:16:25)
    at Module._compile (module.js:541:32)
    at Object.Module._extensions..js (module.js:550:10)

我进入node_modules查看导致错误的代码行,projects是项目当前路径的字符串。

这是我在package.json中的玩笑配置

  "jest": {
    "transform": {
      ".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
    },
    "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
    "moduleFileExtensions": [
      "ts",
      "tsx",
      "js"
    ]
  }

有没有人遇到过这个错误并知道如何解决?

【问题讨论】:

  • 这里我不知道确切的解决方案,但是 .map 是数组原型的一部分。
  • 你能展示你的笑话配置吗?这是所有测试都失败还是只有一个失败?
  • @Nick,我用开玩笑的配置更新了这个问题。这对所有测试都失败了。即使我删除了所有测试,这个错误仍然会出现。

标签: javascript reactjs typescript jestjs


【解决方案1】:

刚刚遇到了同样的问题。如果您仔细查看堆栈跟踪,您会注意到您运行了两种不同的 Jest 设置:

全局安装的笑话:

...(/Users/DavidHu/.nvm/versions/node/v6.2.1/lib/node_modules/jest-cli/bin/jest.js:16:25)

项目中的笑话:

...(/Users/DavidHu/Desktop/coding/projects/swapnow/node_modules/jest-cli/build/cli/runCLI.js:172:28)

它们可能有不同(且不兼容)的版本。 如果您从项目(或全局 node_modules)中删除 jest,应该可以解决问题。

【讨论】:

  • 从项目中删除 Jest 绝对应该是最后的选择。当您知道要在您的项目上运行/工作的 Jest 版本时,任何进入您项目的人,甚至 6 个月后的您自己都会感谢您。
【解决方案2】:

如果您在项目中更新 jest,但仅使用命令行(而不是 node_modules)使用 jest 运行它,就会发生这种情况。

要解决此问题,您需要更新全局笑话:

npm install -g jest

【讨论】:

    【解决方案3】:

    我有同样的问题。我将字符串而不是数组传递给“项目”参数。

    在 [] 中包装字符串 'projectPath' 为我修复了它(位于 Gulp 任务中):

    var jestCLI = require('jest-cli');
    ...
    jestCLI.runCLI({'onlyChanged': true}, [projectPath], callback);
    

    【讨论】:

    • 我的问题与我传入 dirname 而不是 [dirname] 的情况类似。另外,我目前在 v22 上,所以上面的答案可能适用于以前的版本。重新安装并没有解决我的问题。
    【解决方案4】:

    我在 jest-cli 的本地和项目安装中遇到了同样的问题。我删除了 jest-cli 的项目安装并解决了问题。

    【讨论】:

      猜你喜欢
      • 2018-06-01
      • 2019-07-14
      • 2021-02-15
      • 2021-08-30
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      相关资源
      最近更新 更多