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

Why would my folder name impact `npm test`, Jest, and Babel?

我的 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

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

更新 3

克隆到 /Users/dstein/Repositories/my-app 失败。克隆到 /Users/dstein/my-app 有效。克隆到 /Users/dstein/Repositories/abc/my-app 有效。不确定是什么导致了那条随机的失败路径,特别是考虑到重命名 my-app 的文件夹本身是有效的。

我想到了我的计算机上唯一可能不同的东西 - 缓存。我试过 "test": "NODE_ENV=test BABEL_DISABLE_CACHE=1 jest", 无济于事。然后我在 Jest 代码库中搜索了 cache babel 并找到了 https://github.com/facebook/jest/blob/6ee2a14b83393c9e3e3408beb5c4848489f04cf6/docs/Troubleshooting.md. Running jest with --no-cache had it work. I then found 。所以我清除了缓存,问题就完全消失了。

https://github.com/facebook/jest/issues/5796

提交了可能的错误或文档问题