Webpack cant compile ts 3.7(Optional Chaining、Nullish Coalescing)


21

私はtypescript 3.7オプションの連鎖、無効な結合のような機能を使用しようとします。しかしwebpack、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);
``

packages.jsonファイルを投稿できますか?
Carlos Crespo、

回答:


30

ターゲットをファイルに変更esnextes2018ましたtsconfig.json。今では動作します。


6
これは私にはうまくいきませんでした。Webpackはまだ同じエラーで失敗します。
Alejandro Corredor

使用している場合は機能しません"foo".matchAll(/o+/g)。原因はES2020の機能です。
Jason Schilling

これはばかげていますが、本当にうまくいきます!どうすればいいのかわからない...オプションのチャニングがES2020以降に私たちにもたらされました。ES2018とES2019はどちらも正しく機能しますが、ES2020はまだクラッシュしています。
Max Travis

1

コードを変換するために使用しているローダーに応じて、いくつかのオプションが利用可能です

の場合ts-loader、typescriptからの出力がWebpackで理解できることを確認する必要があります。これはtargetES2018inに設定することで実現できますtsconfig.json

の場合babel-loader、バベルがロードすることを確認する必要があります

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

プラグイン。使用している場合は注意することをpreset-env、それがまたはに応じて、このプラグインをロードしない場合があり、あなたのtargetsbrowserlist(すなわち、ターゲットENVは、これらの言語機能をサポートしている場合はロードされません)、その場合には、唯一の方法は、その含有を保証しますのplugins配列に手動で指定することでbabel.config.js

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.