Webpack non può compilare 3.7 (concatenamento opzionale, coalescenza nullo)


21

Cerco di usare typescript 3.7funzionalità come il concatenamento opzionale, Nullish Coalescing. Ma webpackmi dà un errore durante il transpaling.

app: Module parse failed: Unexpected token (50:40)
app: File was processed with these loaders:
app:  * ../../../node_modules/ts-loader/index.js
app: You may need an additional loader to handle the result of these loaders.
app: | export const Layout = (props) => {
app: |     const regionsResults = useQuery(regionsQuery, { fetchPolicy: 'cache-first' });
app: >     const regions = regionsResults.data?.regions ?? [];
app: |     const userItem = useQuery(usersProfileQuery, { fetchPolicy: 'cache-first' });
app: |     const handleOnClick = (selected) => props.history.push(selected.key);
``

puoi pubblicare il tuo packages.jsonfile?
Carlos Crespo,

Risposte:


30

Ho cambiato obiettivo: esnextin es2018in tsconfig.jsonfile. Ora funziona.


6
Questo non ha funzionato per me. Webpack non riesce ancora con lo stesso errore.
Alejandro Corredor,

Non funziona se si utilizza "foo".matchAll(/o+/g)perché è una funzione ES2020.
Jason Schilling il

Questo è ridicolo, ma funziona davvero! Non riesco nemmeno a capire come ... Il cambio opzionale ci ha portato solo da ES2020. ES2018 ed ES2019 funzionano entrambi correttamente, tuttavia ES2020 continua a bloccarsi.
Max Travis,

1

A seconda del caricatore in uso per trasferire il codice, sono disponibili diverse opzioni

Per ts-loader, è necessario assicurarsi che l'output di dattiloscritto sia comprensibile da Webpack. Ciò può essere ottenuto impostando targeta ES2018in tsconfig.json.

Per babel-loader, dovrai assicurarti che babel carichi il

  • @babel/plugin-proposal-nullish-coalescing-operator

collegare. Nota che se lo stai utilizzando preset-env, potrebbe caricare o meno questo plug-in a seconda del tuo targetso browserlist(cioè, non verrà caricato se l'en target ha il supporto per queste funzionalità linguistiche), nel qual caso l'unico modo per garantirne l'inclusione è specificandolo manualmente nella pluginsmatrice in babel.config.js,

  plugins: [
    '@babel/plugin-proposal-nullish-coalescing-operator',
  ],

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.