【发布时间】: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