Reactjs [React]Jest SyntaxError:意外的令牌导入

Reactjs [React]Jest SyntaxError:意外的令牌导入,reactjs,jestjs,Reactjs,Jestjs,我一直在苦苦挣扎,我不知道该怎么做。 在这个问题上似乎有很多问题,我试过了每一个问题,但我似乎在开玩笑时仍然有问题。导入似乎根本不起作用。 所以请任何人都能帮助我解决这个问题 错误 C:\Users\admin\Documents\my app\\u tests\umain.spec.js:1 ({“Object.”:函数(模块、导出、require、u dirname、u filename、全局、jest){从“React”导入React; ^^^^^^ SyntaxError:意外的令牌导入

我一直在苦苦挣扎,我不知道该怎么做。 在这个问题上似乎有很多问题,我试过了每一个问题,但我似乎在开玩笑时仍然有问题。导入似乎根本不起作用。 所以请任何人都能帮助我解决这个问题

错误

C:\Users\admin\Documents\my app\\u tests\umain.spec.js:1
({“Object.”:函数(模块、导出、require、u dirname、u filename、全局、jest){从“React”导入React;
^^^^^^
SyntaxError:意外的令牌导入
在ScriptTransformer.\u transformAndBuildScript(节点\u模块/jest运行时/build/ScriptTransformer.js:289:17)
在进程中。_tick回调(内部/process/next_tick.js:109:7)
main.spec.js

从“React”导入React;
从“酶”导入{shall,mount};
从“反应测试渲染器”导入渲染器;
从“../src/Home”导入{Home};
测试('基本测试',()=>{
期望(2+2),期望(4);
});
运行此命令将创建错误,但如果我注释掉导入行,它将正常工作

巴勃勒克

{
“插件”:[
“转换异步函数”,
“变换对象静止排列”,
“变换再生器”
],
“预设”:[
“es2015”,
“反应”
]
}
我试着添加“env”:{“test”:{“plugins”:[“transform-es2015-modules-commonjs”]}},但它没有做任何事情,所以我现在就把它取出来

package.json

{
“名称”:“我的应用程序”,
“版本”:“0.0.1”,
“说明”:“应用程序”,
“脚本”:{
“开始”:“node server.js”,
“postinstall”:“webpack-p--define process.env.NODE\u env=\”'production'\“--define process.env.SERVER\u ROOT=\”'${SERVER\u ROOT}'\”,
“启动开发”:“网页包开发服务器”,
“测试”:“开玩笑”
},
“发动机”:{
“节点”:“6.11.1”,
“npm”:“3.10.8”
},
“笑话”:{
“转变”:{
“^.+\\.jsx?$”:“巴别塔笑话”
},
“moduleNameMapper”:{“\\(s?css |以下)$”:“identity obj proxy”}
},
“依赖项”:{
“巴别塔核心”:“^6.24.1”,
“巴别塔加载器”:“^6.4.1”,
“babel插件转换异步函数”:“^6.22.0”,
“巴别塔插件转换对象静止排列”:“^6.23.0”,
“巴别塔插件转换再生器”:“^6.24.1”,
“巴别塔polyfill”:“^6.23.0”,
“babel-preset-es2015”:“^6.24.1”,
“巴别塔预设反应”:“^6.24.1”,
“css加载器”:“^0.28.0”,
“快车”:“^4.15.4”,
“文件加载器”:“^0.11.1”,
“图像网页包加载器”:“^3.3.0”,
“时刻”:“^2.18.1”,
“道具类型”:“^15.5.8”,
“反应”:“^15.5.4”,
“反应引导”:“^0.31.0”,
“反应引导表”:“^3.3.3”,
“反应日期选择器”:“^0.46.0”,
“反应dom”:“^15.5.4”,
“反应区”:“^3.13.3”,
“react redux”:“^5.0.4”,
“反应路由器”:“^4.1.1”,
“反应路由器dom”:“^4.1.1”,
“redux”:“^3.6.0”,
“redux持久化”:“^4.6.0”,
“redux thunk”:“^2.2.0”,
“sails.io.js”:“^1.1.10”,
“socket.io客户端”:“1.6.0”,
“样式加载器”:“^0.16.1”,
“网页包”:“^2.4.1”
},
“依赖性”:{
“babel eslint”:“^7.2.2”,
“巴别塔笑话”:“^20.0.3”,
“babel-plugin-transform-es2015-modules-commonjs”:“^6.26.0”,
“babel-preset-es2015”:“^6.24.1”,
“巴别塔预设反应”:“^6.24.1”,
“酶”:“^2.9.1”,
“eslint”:“^3.19.0”,
“eslint配置airbnb”:“^14.1.0”,
“eslint插件巴别塔”:“^4.1.1”,
“eslint插件导入”:“^2.2.0”,
“eslint-plugin-jsx-a11y”:“^4.0.0”,
“eslint插件反应”:“^6.10.3”,
“笑话”:“^20.0.4”,
“反应测试渲染器”:“^15.6.1”,
“网页包开发服务器”:“^2.4.2”,
“whatwg fetch”:“^2.0.3”
}
}

您需要告诉jest使用Babel导入文件。 可以通过在
package.json
中设置
jest
transform
属性来完成:

"jest": {
    "transform": {
      "^.+\\.jsx?$": "babel-jest"
    }
}

是的,谢谢!这导致了导入,但现在我得到了一个SyntaxerError错误:意外的标记:当我试图从“../src/Home”;({“Object”:函数(模块,导出,require,_dirname,__filename,global,jest)导入我自己的脚本时{:global.react-datepicker\uuuu-tether-element-attached-top.react-datepicker\uuuuu-triangle,:global.react-datepicker\uuuu-element-attached-top.react-datepicker\uuu-year-read-view-down-arrow似乎与react.datepicker\uu-month-read-view-view-view有问题您正在导入您的样式。您可以将此部分添加到您的
包.json
,在jest部分:“moduleNameMapper”:{“\\(s?css | less)$”:“identity obj proxy”}我已将该部分添加到我的package.json中,但错误仍然存在。js世界中的情况变化很快。有了webpack 4和babel的正确配置,您不需要使用babel core或babel jest。只需使用预设值
env
react
stage-0
到babelrc。如果在根级别使用
模块:false
,您需要在测试环境中使用
modules:true
。意外的令牌导入通常意味着babel没有转换为commonJs模块供jest/node使用。