我一直在致力于一个迁移项目,将 Rails 5 升级到 Rails 7。我们决定继续使用 Sprockets,因为它是一个相当大的应用程序,迁移到新的工具集会产生比我们现在能承受的更多的工作.
一切似乎都运行良好(至少所有测试都通过),但是当我启动浏览器时,我在控制台中收到此错误消息:
Uncaught SyntaxError: Unexpected token 'export'
来自 application.js
我读到可以通过设置
type=module
的 <script>
来解决这个问题。
这可以吗?我在
javascript_include_tag
的文档中没有看到任何内容。
我的理解是,Sprockets 4 中包含了 ES6 支持,所以我不确定为什么会发生这种情况。
任何其他指定的选项将被视为脚本标记的 HTML 属性。
<%= javascript_include_tag "application.js", type: :module %>
要转译 ES6,您需要添加
gem "babel-transpiler"
并使用 .es6
扩展名而不是 .js
。
https://github.com/rails/sprockets?tab=readme-ov-file#es6-support