使用 async/await 的 create-react-app 和 JavaScript 依赖项无法编译


重现

步骤:

npm install -g create-react-app
create-react-app demo-app
cd demo-app
npm install --save instascan
# add `import Instascan from 'instascan'` to index.js
npm start

错误信息:

Failed to compile.
Error in ./~/instascan/src/camera.js
Module parse failed: /Users/rd/code/instascan-react/node_modules/instascan/src/camera.js Unexpected token (13:8)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (13:8)
 @ ./~/instascan/index.js 6:10-33
Error in ./~/instascan/src/scanner.js
Module parse failed: /Users/rd/code/instascan-react/node_modules/instascan/src/scanner.js Unexpected token (208:8)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (208:8)
 @ ./~/instascan/index.js 5:11-35

进一步检查表明,在摄像头.js:13和扫描仪.js:208上发现了对async的呼叫。创建-反应-应用程序文档说支持 async/await,但也许没有为依赖项启用此功能?

我不确定接下来要尝试什么。此处的任何指导将不胜感激。

这正在按预期工作。

创建 React App 仅将您的代码编译为 ES5(浏览器和缩小器可以理解(,而不是依赖项的代码。否则它会慢得多(并且还会破坏一些库(。

您可以向提供未编译代码的库提交问题,并要求他们在发布到 npm 之前将其编译为 ES5。这通常是推荐的做法,大多数支持浏览器使用的库都这样做。

最新更新