我不确定发生了什么,但是每当我想向我的应用程序添加单元测试时,我都必须使用以下代码添加.babelrc
文件:
{
"presets": [
"es2015",
"next/babel"
]
}
在此之前,我不需要该文件,它只是一个带有语义的nextjs应用程序。目前为止,一切都好。直到我决定重建我的语义 ui 主题,结果证明这是一个巨大的错误!
这就是我跑的:cd semantic && gulp build
这导致我的应用程序在存在.babelrc
时停止工作。
这些是我的package.json
脚本:
"scripts": {
"dev": "next",
"build": "next build",
"start": "next start",
"semantic": "cd semantic && gulp build",
"test": "mocha --require babel-core/register --watch-extensions js **/*.test.js"
},
如果我尝试运行next
相关的脚本,则会收到以下错误:
错误:不允许插件/预设文件导出对象,只允许导出函数。在/Users/theJuls/Workspace/cbt/client/node_modules/babel-preset-es2015/lib/index 中.js
如果我尝试运行我的单元测试,我会得到
错误:在"/Users/theJuls/Workspace/cbt/client/node_modules/next/babel.js">中指定的插件 0 提供了无效的"default"属性(处理预设时:"/Users/theJuls/Workspace/cbt/client/node_modules/next/babel.js")
如果我删除.babelrc
,所有next
脚本都正常运行,但是我完全丢失了单元测试。为什么会这样?我该怎么做才能解决这个问题?
我不确定这是否相关,但这是我当前的文件结构:
api/
components/
config/
lib/
pages/
semantic/
store/
.babelrc
package-lock.json
package.json
semantic.json
我不确定为什么它突然坏了,但我已经找到了一种方法,这也是最新的方法,因为我以前的方法已被弃用。
首先,我必须安装以下模块:@babel/core
和@babel/register
将.babelrc
文件更改为如下所示:
{
"presets": [
"@babel/preset-env",
"next/babel"
]
}
最后,在package.json
只需稍微将test
命令更改为:
"test": "mocha --require @babel/register --watch-extensions js **/*.test.js">
由于我们现在正在使用@babel/register
这让一切恢复了正常。