Webpack không thể biên dịch ts 3.7 (Chaining tùy chọn, Nullish Coalescing)


21

Tôi cố gắng sử dụng typescript 3.7các tính năng như Chaining tùy chọn, Nullish Coalescing. Nhưng webpackcho tôi một lỗi trong khi 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);
``


bạn có thể gửi packages.jsontập tin của bạn ?
Carlos Crespo

Câu trả lời:


30

Tôi đã thay đổi mục tiêu: esnextđể es2018trong tsconfig.jsontập tin. Bây giờ nó hoạt động.


6
Điều này đã không làm việc cho tôi. Webpack vẫn thất bại với cùng một lỗi.
Alejandro Corredor

Không hoạt động nếu bạn đang sử dụng "foo".matchAll(/o+/g)vì đó là tính năng ES2020.
Jason Schilling

Điều này là vô lý, nhưng nó thực sự hoạt động! Tôi thậm chí không thể hiểu làm thế nào ... channing tùy chọn chỉ mang đến cho chúng tôi kể từ ES2020. ES2018 & ES2019 đều hoạt động bình thường, btw ES2020 vẫn bị lỗi.
Max Travis

1

Tùy thuộc vào trình tải nào bạn đang sử dụng để sao chép mã, có một số tùy chọn khả dụng

Đối với ts-loader, bạn cần đảm bảo rằng đầu ra từ bản thảo có thể hiểu được bằng Webpack. Điều này có thể đạt được bằng cách thiết lập targetđể ES2018trong tsconfig.json.

Đối với babel-loader, bạn sẽ cần đảm bảo babel tải

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

cắm vào. Lưu ý rằng nếu bạn đang sử dụng preset-env, nó có thể hoặc không tải plugin này tùy thuộc vào targetshoặc browserlist(nghĩa là sẽ không được tải nếu env đích có hỗ trợ cho các tính năng ngôn ngữ này), trong trường hợp đó là cách duy nhất để đảm bảo sự bao gồm của nó là bằng cách chỉ định thủ công nó trong pluginsmảng trong babel.config.js,

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.