Вебпак не може скласти т. 3,7 (необов'язкове ланцюжок, нульове злиття)


21

Я намагаюся використовувати typescript 3.7такі функції, як Необов'язкове ланцюг, Нуліш коалесценція. Але webpackдає мені помилку під час транспалювання.

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файл?
Карлос Креспо

Відповіді:


30

Я змінив мета: esnextщоб es2018в tsconfig.jsonфайлі. Зараз це працює.


6
Це для мене не вийшло. Вебпак все ще не працює з тією ж помилкою.
Алехандро Корредор

Не працює, якщо ви використовуєте, "foo".matchAll(/o+/g)тому що це функція ES2020.
Джейсон Шиллінг

Це смішно, але це справді працює! Я навіть не можу зрозуміти, як ... Необов'язкове сканування привезене до нас лише з ES2020. Обидва ES2018 та ES2019 працюють належним чином, btw ES2020 все ще виходить з ладу.
Макс Травіс

1

Залежно від того, який завантажувач ви використовуєте, щоб перевлаштувати код, доступні кілька варіантів

Тому що ts-loaderвам потрібно переконатися, що вихід із Typecript зрозумілий Webpack. Це може бути досягнуто шляхом установки targetна ES2018в tsconfig.json.

Для цього babel-loaderвам потрібно буде переконатися, що вафель завантажує

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

підключати. Зауважте, що якщо ви використовуєте preset-env, він може або не може завантажувати цей плагін залежно від вашого targetsабо browserlist(тобто не завантажуватиметься, якщо цільовий env підтримує ці мовні функції), і в цьому випадку єдиний спосіб гарантувати його включення це вручну вказавши його в pluginsмасиві в babel.config.js,

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.