Javascript 在带有Babel的ReactJS上使用async Wait会导致错误:意外的令牌

Javascript 在带有Babel的ReactJS上使用async Wait会导致错误:意外的令牌,javascript,reactjs,async-await,babeljs,ecmascript-2017,Javascript,Reactjs,Async Await,Babeljs,Ecmascript 2017,想在我的项目中使用ES8 async/await。最近一直在ReactNative with Expo上使用它,所以没想到ReactJS会出现任何问题。虽然,该应用程序现在无法生成。。。 这是我得到的错误: 语法错误:C:/projects/project1/src/containers/offerview.js:意外标记(84:40) 83 | >84 | initialGetProduct=async(productId)=>{ |

想在我的项目中使用ES8 async/await。最近一直在ReactNative with Expo上使用它,所以没想到ReactJS会出现任何问题。虽然,该应用程序现在无法生成。。。 这是我得到的错误:

语法错误:C:/projects/project1/src/containers/offerview.js:意外标记(84:40)
83 |
>84 | initialGetProduct=async(productId)=>{
|                                         ^
85 | const{dispatch}=this.props;
86 |等待调度(resetOfferStateAction());
87 |调度(getProductAction(productId));
这是一个组成部分,我已经删掉了大部分内容,因为我怀疑它们可能与问题有关:

ProverView的导出类扩展了组件{ 组件willmount(){ this.initialGetProduct(this.props.location.query.product\u id); } //使用async initialGetProduct()时也会出现相同的错误{ initialGetProduct=async(productId)=>{ const{dispatch}=this.props; 等待调度(resetOfferStateAction()); 调度(getProductAction(productId)); 选择product(productId); } render(){…} } 我曾尝试在babel配置中设置es2017预设,与使用“transform async to generator”插件相同。这是我在.babelrc文件中的内容:

{
“预设”:[
“es2017”,
“反应”,
“第0阶段”
],
“插件”:[
“react hot loader/babel”,
“将异步转换为生成器”,
“转换类属性”,
[“导入”、{“库名”:“antd”、“样式”:“css”}]
]
}
这是我的eslint配置。在eslint讨论中,他们说这更像是babel eslint的问题,尽管我添加了parserOptions ecmaVersion=2017:

module.exports={
根:是的,
解析器:“babel eslint”,
//导入插件有时会被禁用,请在下面滚动查看原因
插件:[/*'import',*/'flowtype','jsx-a11y','react'],
环境:{
浏览器:是的,
是的,
节点:true
},
解析选项:{
ecmaVersion:2017,
sourceType:'模块',
ECM特征:{
jsx:没错,
是的,
实验对象:正确
}
},
设置:{
“导入/忽略”:[
“节点_模块”,
“\\(json | css | jpg | png | gif | eot | svg | ttf | woff | woff2 | mp4 | webm)$”,
],
“导入/扩展”:['.js'],
“导入/解析程序”:{
节点:{
扩展:['.js','.json']
}
}
},
规则:{…}
};
和包json依赖项:

“开发依赖性”:{
“巴别塔cli”:“^6.26.0”,
“巴别塔核心”:“^6.13.2”,
“babel eslint”:“^6.1.2”,
“babel插件异步转换为生成器”:“^6.24.1”,
“babel插件转换类属性”:“^6.24.1”,
“巴别塔插件转换运行时”:“^6.12.0”,
“巴别塔polyfill”:“^6.26.0”,
“babel-preset-es2015”:“^6.13.2”,
“babel-preset-es2016”:“^6.24.1”,
“babel-preset-es2017”:“^6.24.1”,
“巴别塔预设反应”:“^6.11.1”,
“babel-preset-stage-0”:“^6.24.1”,
“工作服”:“^2.11.12”,
“eslint”:“^3.2.2”,
“eslint配置airbnb”:“^10.0.0”,
“eslint插件反应”:“^6.0.0”,
“忽略样式”:“^4.0.0”,
“伊斯坦布尔”:“^1.0.0-alpha.2”,
“摩卡咖啡”:“^3.0.2”,
“nock”:“^8.0.0”,
“react加载项测试实用程序”:“^15.3.0”,
“反应脚本”:“0.2.1”,
“redux模拟商店”:“^1.1.2”,
“redux saga开发工具”:“^0.1.2”
},
“依赖项”:{
“巴别塔polyfill”:“^6.26.0”,
“酶”:“^2.4.1”,
“eslint插件流类型”:“^2.39.1”,
“eslint-plugin-jsx-a11y”:“^6.0.2”,
“预期”:“最新”,
“同构提取”:“^2.2.1”,
“jsdom”:“^9.9.1”,
“lodash”:“^4.17.4”,
“努卡旋转木马”:“^2.3.0”,
“pushstate服务器”:“最新”,
“反应”:“^15.2.1”,
“react dom”:“^15.2.1”,
“react redux”:“^4.4.5”,
“react路由器”:“^2.6.0”,
“react router redux”:“^4.0.8”,
“反应侧栏”:“^2.3.2”,
“redux”:“^3.6.0”,
“redux记录器”:“3.0.1”,
“重演传奇”:“^0.14.3”
},

如果您能告诉我可能有什么问题,我将不胜感激。

我没有运行代码,但是您错误地声明了
initialGetProduct
函数。应该是

async initialGetProduct() {...

因此,问题出在与我想象的稍有不同的地方。我正在使用react脚本启动我的应用程序,我的错误是我认为我在项目中的配置(我不是最初启动它的人)已经被使用了。但它不是。所以我要做的就是更新react脚本版本。它是0.2.1,现在是^1.0.17,难怪它不能与ES8一起工作。。。 很抱歉给大家带来不便,谢谢大家,你们的建议教会了我很多。 在react脚本配置中,babel只有以下内容:

//使用Babel处理JS。
{
测试:/\(js | jsx | mjs)$/,
包括:path.appSrc,
loader:require.resolve('babel-loader'),
选项:{
//@从弹出开始移除
巴别塔:错,
预设:[require.resolve('babel-preset-react-app')],
//@在弹出端移除
//这是webpack的“babel loader”的一个特性(不是babel本身)。
//它在./node_modules/.cache/babel loader中启用缓存结果/
//用于更快重建的目录。
cacheDirectory:true,
},
},

如果我想要一个异步箭头函数呢?错误仍然是一样的。我相信您需要Babel插件已将其添加到开发依赖项和babelrc插件中,但不幸的是它没有帮助
异步initialGetProduct()的确切错误是什么
?因为没有箭头,所以不可能是相同的精确错误。错误是相同的,尽管它指向行的另一个位置(因为不再有箭头)@VMAtm:使用
stage-2
将包括
stage-3
stage-4
()的预设–一个