【问题标题】:Why doesn't babel-standalone@6 work in Firefox 20?为什么 babel-standalone@6 在 Firefox 20 中不起作用?
【发布时间】:2018-07-11 11:02:39
【问题描述】:

我写了一些代码,当在浏览器(Firefox 20.0)中打开页面时,它在控制台中显示以下错误:

JS:https://unpkg.com/babel-standalone@6/babel.min.js

TypeError: e.forEach 不是函数@https://unpkg.com/babel-standalone@6/babel.min.js:8

代码:

<script type="text/babel">
   let input = [1, 2, 3];
   console.log(typeof input);
</script>

我发现使用“let”或“var”并没有什么不同。它甚至在到达这些线之前就崩溃了。为什么会这样?我错过了什么吗?

PS:虽然我可以使用 NPM 和 browserify 来使用 babel,但我只是想用这个脚本测试一下。

【问题讨论】:

  • 你能把它放在小提琴或代码笔里吗?
  • 你能更新你的浏览器吗? Firefox 20 非常老旧
  • 我愿意,但这不就是我们使用 Babel 独立来支持最新 JS 的新语法和服务的原因吗?甚至 Babel 与浏览器版本的兼容性问题?就像它会在特定版本之后工作? @loganfsmyth 我试图在网上查找这些查询,但没有找到与 Babel 独立相关的任何内容。

标签: javascript node.js firefox babeljs


【解决方案1】:

这似乎是因为 Lodash 不支持您使用的 Firefox 版本,而 Babel 依赖于 https://github.com/lodash/lodash/issues/2924

通常 babel-standalone 以标准 ES5 环境为目标,但这似乎是我们无法解决的情况,因为它位于我们的一个依赖项中。

【讨论】:

  • 您好,谢谢。 “但这似乎是我们无法解决的情况,因为它在我们的依赖项之一中。”这是什么意思?你能多说一点吗?而“targets ES5” => 这是否意味着它将现代 JS 编译为 ES5 并且浏览器必须支持 ES5 才能工作?
  • “支持”有两个不同的问题。 babel-standalone 将在什么基础上运行,它输出的代码将在什么基础上运行。 babel-standalone 主要针对 ES5 环境。它如何编译代码完全取决于它的配置方式以及用户代码最初的用途。 babel-standalone 是一个构建工具,它并不意味着在生产环境中运行客户端,这恰好是一个很好的原型制作方式,因此对 FF 20 的支持并不重要。
  • 好的。现在我猜它在 FF 20 中不起作用,因为浏览器可能不支持 ES5 的某些功能(?)。我对此进行了更多搜索,并发现了另一种行为。我在 babel-standalone 之前添加了这个链接cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/…,瞧!一切正常!你能谈谈吗? (我假设 polyfill 包含浏览器不支持的功能,以支持它们)。
  • 它在 Firefox 20 中不起作用,因为该版本具有 ES6 功能的非标准实现。 Lodash 检测到 ES6 功能可用,即使它实际上并不可用。通过首先添加该 polyfill,您正在修复它,以便 babel-standalone 可以正常工作。这是一个很好的解决方案:)
  • 但是通过使用 babel / polyfill 我们正在“将 ES6 转换为 ES5”,那么它与 FF 20 的 ES6 的非标准实现有什么关系呢?这令人困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多