我已经在本地的Rails应用程序中为我使用了可爱的topojson库:
https://github.com/topojson/topojson
,它使我们可以在Google地图中显示一些不错的geoJSON,如下所示:
我展示了它,并暴露了map.js文件,因为这似乎是我们部署到heroku时的麻烦所在。在heroku上,map.js文件在chrome上显示错误:
maps -.... js:27未捕获的SyntaxError:意外的令牌导出
和Firefox上的类似错误(尽管在不同的行上):
SyntaxError:导出声明只能出现在模块maps -... 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中的新增功能)的方法,但这似乎是一个更深的兔子洞,即链轮4或webpack或类似的东西。
无论如何,如果有人对其他可能导致heroku的运行方式有所不同的想法,我希望听到它们,所以我可以将其锁定或研究如何在本地复制该错误。
非常感谢
答案 0 :(得分:0)
Heroku支持人员说这里的问题是在资产管道中使用npm,更好的方法是使用webpacker