【问题标题】:rails asset pipeline javascript "SyntaxError: Unexpected token export"rails资产管道javascript“SyntaxError:意外的令牌导出”
【发布时间】:2019-10-02 12:55:11
【问题描述】:

我有可爱的 topojson 库在本地的 Rails 应用程序中为我工作:

https://github.com/topojson/topojson

它允许我们在谷歌地图中显示一些不错的 geoJSON,如下所示:

我展示它时暴露了 map.js 文件,因为这似乎是我们部署到 heroku 时的问题所在。在 heroku 上,map.js 文件在 chrome 上出现错误:

maps-....js:27 Uncaught SyntaxError: Unexpected token export

在 firefox 上出现类似错误(尽管在不同的行):

SyntaxError: 导出声明可能只出现在模块映射的顶层-...js:1

我一直与 heroku 支持人员取得联系,他们建议锁定我们的 npm 版本,因为看起来缩小的 js 文件在本地的内容与在 heroku 上的内容略有不同。我注意到我已经尽我所能在本地复制生产模式,破坏和重新编译静态资产等并像这样运行:

RAILS_SERVE_STATIC_FILES=true DEVISE_SECRET_KEY=1234 AIRBRAKE_PROJECT_ID=1234 RAILS_ENV=production bundle exec rails s

但尽我所能,我无法在我的开发机器上复制该问题。

您可以在此 PR https://github.com/AgileVentures/LocalSupport/pull/1069 中看到所有血淋淋的细节,我想知道是否有人对我的开发机器和 heroku 之间可能导致 javascript 文件编译方式不同的任何其他问题有任何想法?在 heroku 上,我们有以下内容:

export*from"topojson-client";export*from"topojson-server";export*from"topojson-simplify

但是在本地编译的静态资产中没有提到有问题的export关键字,但是它们在heroku服务器上的文件中。我一直在尝试各种方法来确保我正在删除缓存文件,并且我所做的更改在本地和 heroku 上都得到了反映。

我也一直在研究尝试和处理 export 关键字(es6 中的新功能)的方法,但这似乎是一个更深的兔子洞,即 sprockets 4 或 webpack 或类似的。

无论如何,如果有人对其他可能导致 heroku 在这里运行方式不同的事情有任何想法,我很想听听他们的意见,所以我可以锁定他们或研究如何在本地复制错误。

在此先感谢

【问题讨论】:

  • heroku 的好建议是在本地尝试 NODE_ENV=production,看看我是否可以在我的开发机器上复制该问题,但这似乎没有任何影响......

标签: javascript ruby-on-rails node.js heroku


【解决方案1】:

Heroku 支持说这里的问题是使用带有资产管道的 npm,更好的方法是使用 webpacker

【讨论】:

    猜你喜欢
    • 2017-07-17
    • 1970-01-01
    • 2021-02-18
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多