projects.map 不是 jest-cli 的功能
Posted
技术标签:
【中文标题】projects.map 不是 jest-cli 的功能【英文标题】:projects.map is not a function for 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,我用开玩笑的配置更新了这个问题。这对所有测试都失败了。即使我删除了所有测试,这个错误仍然会出现。 【参考方案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 的项目安装并解决了问题。
【讨论】:
以上是关于projects.map 不是 jest-cli 的功能的主要内容,如果未能解决你的问题,请参考以下文章
开玩笑错误:'jest' 不是内部或外部命令、可运行程序或批处理文件
如何解决 TypeError: environment.teardown is not a function