Webpack无法编译ts 3.7(可选链接,Nullish合并)


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文件吗?
卡洛斯·克雷斯波

Answers:


30

:我改变目标esnext,以es2018tsconfig.json文件中。现在可以了。


6
这对我不起作用。Webpack仍然失败,并显示相同的错误。
亚历杭德罗·科雷多

如果您使用"foo".matchAll(/o+/g)的是ES2020功能,则无法使用。
Jason Schilling

这很荒谬,但确实有效!我什至不知道该怎么做...自ES2020以来才带来的可选调整。ES2018和ES2019都可以正常工作,但ES2020仍然崩溃。
Max Travis

1

根据您用来插入代码的加载器,有几种可用的选项

对于ts-loader,您需要确保Webpack可以理解typescript的输出。可以通过设置targetES2018in 来实现tsconfig.json

对于babel-loader,您需要确保babel加载了

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

插入。请注意,如果您使用preset-env,则根据您targets或的情况,它可能加载也可能不加载该插件browserlist(即,如果目标环境支持这些语言功能,则不会加载该插件),在这种情况下,唯一可确保包含该插件的方法是通过在中的plugins数组中手动指定它babel.config.js

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.