Webpack에서 ts 3.7을 컴파일 할 수 없음 (선택적 체인, Nullish Coalescing)


21

typescript 3.7Optional Chaining, Nullish Coalescing과 같은 기능 을 사용하려고합니다 . 그러나 webpacktranspaling하는 동안 오류가 발생합니다.

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

파일 에서 target : esnext을 ( es2018를) 변경했습니다 tsconfig.json. 이제 작동합니다.


6
이것은 나를 위해 작동하지 않았습니다. 웹팩은 여전히 ​​동일한 오류로 실패합니다.
Alejandro Corredor

사용중인 경우 작동하지 않습니다 "foo".matchAll(/o+/g). ES2020 기능입니다.
Jason Schilling

이것은 말도 안되지만 실제로 작동합니다! ES2020 이후에 선택적인 채닝 (Chain)이 우리에게만 제공되었습니다. ES2018 및 ES2019는 둘 다 올바르게 작동하지만 btw ES2020은 여전히 ​​충돌합니다.
최대 트래비스

1

코드를 변환하는 데 사용하는 로더에 따라 몇 가지 옵션을 사용할 수 있습니다

의 경우 ts-loaderWebpack에서 typescript의 출력을 이해할 수 있어야합니다. in 로 설정 target하면 ES2018됩니다 tsconfig.json.

의 경우 babel-loaderbabel이로드되도록해야합니다.

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

플러그인. 를 사용하는 경우 preset-env또는에 따라이 플러그인을로드 targets하거나 browserlist로드하지 않을 수 있습니다 (예 : 대상 환경에서 이러한 언어 기능을 지원하는 경우로드되지 않음).이 경우 포함을 보장 할 수있는 유일한 방법입니다 수동에 의해 지정 인 plugins에 배열 babel.config.js,

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.