为啥我的文件夹名称会影响 `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 上一直崩溃,而它在代码编辑器中工作?