esm
esm copied to clipboard
Optional Chaining support
with latest node (13.8.0)
// example.js
let a
a?.b
works with when running node --harmony
but doesnot work with esm: node --harmony -r esm example.js
// example.js
import path from 'path'
let a
a?.b
a?.b
^
SyntaxError: Invalid or unexpected token
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
Are there any updates on this issue?
Some update on this issue, I tried on the last NodeJS version (14.1.0) because you don't need --harmony
flag anymore. But it still not working :disappointed:
Without esm, optional chaining works fine.
This is too bad. Same problem with nullish coalescing in Node 14+
FWIW, until esm may support it, it's working for me to use @babel/register
with the plugin @babel/plugin-proposal-optional-chaining
(and I also needed the plugin babel-plugin-transform-import-meta
for import.meta.url
which, unlike esm, babel/register doesn't understand as well as babel-plugin-transform-async-to-promises
to avoid regenerator-runtime for async).
Just stumbled on this issue too. Looking forward for the fix.
Same issue.
id: options.params?.id
^
SyntaxError: Invalid or unexpected token
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
The reason I use esm is so that I don't have to build my code using Babel. So using babel plugins isn't an option for me.
Node v14.3.0 with and without --harmony flag
I'll update the parser. Thanks!
@jdalton will this parser update include nullish coalescing? 🙏
@jdalton Excited for this one!
@jdalton Any update on when we can expect this?
It works after updating acorn.
Awesome! Hope this gets released soon 👍
Any ETA on this?
It's fixed in my PR. #883
You can use it or fork it. I'm not a maintainer, so I can't merge/publish.
Can you please update the parser?
@luluhoc there is a PR waiting to merge.
We've been using @jsg2021's PR in production for 4 months now without an issue! 🙌
May be considered #offtopic: but how is this not supported yet? Please, pretty please merge the PR as it seems to be working for many.
@chrisspiegl Maybe this does answer your question. 😉
So esm does not have a maintainer?
I can't say for sure. JDD had obviously done most of the housekeeping in this repo. The standard-things
project has multiple members, but
- I'm not sure about their permissions for individual repos.
- I'm not sure about their responsibility for individual repos.
- They probably are pretty busy themselves.
🤷♂️
So esm does not have a maintainer?
If the recent activity is an indicator, looks like the parachute landed in the Salesforce jungle 😉
I believe it's worth noting that ECMAScript modules support is now considered "stable" in node 16, and after a quick glance seems like using esm would be redundant (that is, if you can blindly upgrade to node16).
@CleyFaye indeed. Though my main hangup is testing with mocks.
More over, EcmaModules support is available in Node 12 already
That seems true that with V12+ and especially with V16, you have pretty good support for ECMAScript modules. However, the ESM module here gave a lot more 'leeway'. Moving to a clean implementation was a good chunk of work for me, but at this point I got rid of ESM in my code base at least.
We needed this issue fixed so have forked and published our forked repo if anyone needs it.
Ah wallaby! @smcenlly. I should revisit this stuff.
This code fails. Any import word found in the code will make it fail:
node -r esm script.js
// import smart things from china
const xx = process?.version; console.log(xx)
We needed this issue fixed so have forked and published our forked repo if anyone needs it.
Thanks for this @smcenlly! Unfortunately I'm still having issues with it. I was using esm to allow mocha to use esm imports, but using esm-wallaby
gives me the Cannot use import statement outside a module
error, which the original esm package solved for me. (Unfortunately the original esm package interprets optional chaining as syntax errors though).
I'm running node 14.17.
***EDIT The above issue was related to Mocha, not esm-wallaby. Thanks again for publishing this!