我在 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
文件夹本身是有效的。
最佳答案
我想到了我的计算机上唯一可能不同的东西 - 缓存。我尝试做 "test": "NODE_ENV=test BABEL_DISABLE_CACHE=1 jest",
无济于事。然后我在 Jest 代码库中搜索 cache babel
并找到 https://github.com/facebook/jest/blob/6ee2a14b83393c9e3e3408beb5c4848489f04cf6/docs/Troubleshooting.md 。使用 --no-cache
运行 jest 可以正常工作。然后我发现How to clear Jest cache? 。所以我清除了缓存,问题就完全消失了。
在 https://github.com/facebook/jest/issues/5796 提交了可能的错误或文档问题
关于babeljs - 为什么我的文件夹名称会影响 `npm test` 、 Jest 和 Babel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49263077/