Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Expo Web failed to compile "optional chaining"

Looks like Expo Webpack doesn't optional chaining.

I found this when I tried to install UI Kitten to Expo Web app.

This is the compile error after I added UI Kitten to the newly created Expo app

node_modules/@ui-kitten/components/ui/input/input.component.js 104:38
Module parse failed: Unexpected token (104:38)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
|         this.webEventResponder = devsupport_1.WebEventResponder.create(this);
|         this.focus = () => {
>             this.textInputRef.current?.focus();
|         };
|         this.blur = () => {

Deps versions(latest ones at the moment that I'm writing here.)

Any tips to hack around this?

like image 744
sujameslin Avatar asked Apr 09 '20 15:04

sujameslin


2 Answers

Webpack uses Acorn parser, and Acorn does not support optional chaining as of now.

There is a pending pull request which you can subscribe to to get notified about the progress.

So your workaround options are:

  • do not use webpack
  • do not use optional chaining
  • integrate Babel into your stack, and make sure to pass all *.js-files through Babel first, using this Babel plugin
  • wait for the aforementioned PR to be merged and the next version including this PR to be released
  • fork Acorn, merge the PR yourself, then fork webpack and make it use your forked Acorn
like image 88
connexo Avatar answered Oct 30 '22 07:10

connexo


As @connexo says, the workaround is to integrate a babel plugin. Also, this issue has already been discussed on the github.

like image 1
artyorsh Avatar answered Oct 30 '22 07:10

artyorsh