为啥我的文件夹名称会影响 `npm test`、Jest 和 Babel?

Posted

技术标签:

【中文标题】为啥我的文件夹名称会影响 `npm test`、Jest 和 Babel?【英文标题】:Why would my folder name impact `npm test`, Jest, and Babel?为什么我的文件夹名称会影响 `npm test`、Jest 和 Babel? 【发布时间】:2018-08-22 02:48:21 【问题描述】:

我在我的 Jest 测试设置文件中收到了 SyntaxError: Unexpected token import。我知道修复是通过.babelrc 文件。这实际上适用于一些 情况。我从https://github.com/zeit/next.js/tree/canary/examples/with-jest复制粘贴它。

当我运行npm test 时,它失败了。当我运行npm run test 时,它也失败了。当我运行npm run test:coverage 时,它起作用了。我的脚本如下:

"test": "NODE_ENV=test jest",
"test:coverage": "NODE_ENV=test jest  --coverage --coverageDirectory=coverage",

如果我将 test:coverage 更改为 NODE_ENV=test jest,则会失败。因此,以某种方式请求覆盖报告神奇地解决了这个问题。

奇怪的是,覆盖面失败了,而基本面还在工作。我删除了我的包锁,删除了模块,并再次尝试npm install。然后失败案例反转到我上面写的。

我的设置文件是这样的:

import  configure  from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import jestFetch from 'jest-fetch-mock';

configure( adapter: new Adapter() );
global.fetch = jestFetch;

我已将 Nextjs 示例应用修改为几乎相同,但未出现错误。我不知道有什么不同。

更新

我从字面上复制了示例的所有内容,但仍然无法正常工作。然后我将我的文件夹从my-app 重命名为my-appy,它确实有效。我返回了所有原始代码,包括文件夹名称my-app,但它失败了。我重命名了文件夹,它工作。当我运行 npm test

时,文件夹如何影响发生的事情

更新 2

其他人下载我的回购没有问题。从来没有遇到过这样的文件夹名称问题。

更新 3

克隆到/Users/dstein/Repositories/my-app 失败。克隆到/Users/dstein/my-app 有效。克隆到/Users/dstein/Repositories/abc/my-app 有效。不确定是什么可以针对一个随机的失败路径,特别是考虑到重命名 my-app 本身的文件夹是有效的。

【问题讨论】:

【参考方案1】:

我想到了唯一可能在我的计算机上有所不同的东西 - 缓存。我尝试做"test": "NODE_ENV=test BABEL_DISABLE_CACHE=1 jest", 无济于事。然后我在 Jest 代码库中搜索 cache babel 并找到 https://github.com/facebook/jest/blob/6ee2a14b83393c9e3e3408beb5c4848489f04cf6/docs/Troubleshooting.md。用--no-cache 开玩笑就可以了。然后我找到了How to clear Jest cache?。所以我清除了缓存,问题完全消失了。

在https://github.com/facebook/jest/issues/5796 提交了可能的错误或文档问题

【讨论】:

以上是关于为啥我的文件夹名称会影响 `npm test`、Jest 和 Babel?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 gitlab-ci.yml 在 npm run test 上一直崩溃,而它在代码编辑器中工作?

为啥 NPM 会安装一个空的“etc”文件夹和多个命令文件?

为啥评论会影响我的文件的逻辑?

为啥是 。作为参数传递给没有 -- 分隔符的 npm?

为啥括号会影响 TypeScript 中的类型缩小?

为啥我的 npm_modules 文件夹在 VS Code 中都以红色突出显示?