Webpack tidak dapat mengkompilasi 3,7 (Chaining Opsional, Nullish Coalescing)

21

Saya mencoba menggunakan typescript 3.7fitur seperti Chaining Opsional, Nullish Coalescing. Tetapi webpackmemberi saya kesalahan saat mengubah posisi.

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);
``
Edgaras Karka
sumber
dapatkah Anda memposting packages.jsonfile Anda ?
Carlos Crespo

Jawaban:

30

Saya mengubah target: esnextke es2018dalam tsconfig.jsonfile. Sekarang berhasil.

Edgaras Karka
sumber
6
Ini tidak berhasil untuk saya. Webpack masih gagal dengan kesalahan yang sama.
Alejandro Corredor
Tidak berfungsi jika Anda menggunakan "foo".matchAll(/o+/g)sebab itu fitur ES2020.
Jason Schilling
Ini konyol, tetapi itu benar-benar berhasil! Aku bahkan tidak tahu bagaimana ... channing opsional hanya diberikan kepada kita sejak ES2020. ES2018 & ES2019 keduanya berfungsi dengan baik, namun ES2020 masih mogok.
Max Travis
1

Tergantung pada pemuat yang Anda gunakan untuk transiple kode, ada beberapa opsi yang tersedia

Untuk ts-loader, Anda perlu memastikan output dari naskah dapat dimengerti oleh Webpack. Ini dapat dicapai dengan mengatur targetke ES2018dalam tsconfig.json.

Untuk babel-loader, Anda harus memastikan babel memuat

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

plugin. Perhatikan bahwa jika Anda menggunakan preset-env, itu mungkin atau mungkin tidak memuat plugin ini tergantung pada Anda targetsatau browserlist(yaitu, tidak akan dimuat jika target env memiliki dukungan untuk fitur bahasa ini), dalam hal ini satu-satunya cara untuk menjamin dimasukkannya adalah dengan secara manual menentukannya dalam pluginsarray di babel.config.js,

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