【问题标题】:Nuxt js/Babel `SyntaxError: Unexpected keyword 'const'. Const declarations are not supported in strict mode.`Nuxt js/Babel `SyntaxError: Unexpected keyword 'const'。严格模式不支持 const 声明。`
【发布时间】:2021-08-31 02:37:16
【问题描述】:

我有一个在 Nuxt.js 上创建的 Web 应用程序,但是我注意到某些浏览器(如 Safari、IE)中存在编译错误,我认为这是 Babel 配置的错误,然后我运行npm run build ES6 未编译,我的控制台出现错误 对于跨浏览测试,我正在使用 Browserstack 我在控制台中有以下错误:

Unexpected token '...'. Expected a property name

SyntaxError: Unexpected keyword 'const'. Const declarations are not supported in strict mode.

如何配置 Babel 来编译 ES6?

【问题讨论】:

  • 您的目标是哪个版本? Nuxt 应该开箱即用地将其编译为 ES5,尤其是在不使用 modern 标志的情况下。顺便说一句,你可能会放弃 IE,因为它的支持很快就会被微软自己结束。
  • 嗨,在 BrowserStack 中测试我的应用程序后,我发现问题只出现在 Safari 版本(Safari 10、9 和更低版本)中,目前,这些版本对我来说并不重要,但经过研究,我发现了这个新插件npmjs.com/package/@nuxt/babel-preset-app,我认为在Safari旧版本中手动配置preset应该可以解决这个问题

标签: cross-browser babeljs nuxt.js


【解决方案1】:

显然,您的代码不适用于 Safari v10 及以下版本。在这里查看一些统计数据:

看起来 Safari 与少数版本一起使用,但主要是 v13 和 v14。那些比你不支持的要现代得多。
Safari v10 实际上是从 2007 年开始的,所以我可以肯定地说你可以完全放弃这个版本。

即使 Safari 不是常青浏览器(意思是 updating-itself,如 Firefox 或 Chrome),仍在使用它的人也不会使用那个旧版本。

您需要记住,如果您想支持那么旧的版本,您将严重影响每个用户的整个网站的整体性能。好吧,0.5% 的人会有更好的体验(那些停留在 2007 年的人),但其他人都需要承担旧的 babel 转换版本的重量。

您可以制作 2 个捆绑包(一个是现代的,一个用于超旧的旧版浏览器)并根据它们是否支持 ES 模块来提供一个或另一个。我找不到谈论这个的 Google/HTTP 203。
但是 IMO,对于一个超小的人口来说,这是很多工作(不是那么微不足道),我宁愿把它传递给更重要的事情来处理。

甚至 a11y 也覆盖了更多人。即使如此,它的优先级也可能低于 Safari v10。
这是我的2cts。如果我找到视频,我可能会更新我的答案。

【讨论】:

    猜你喜欢
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多