Rails资产管道javascript“ SyntaxError:意外的令牌导出”

时间:2019-05-15 11:30:55

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

我已经在本地的Rails应用程序中为我使用了可爱的topojson库:

https://github.com/topojson/topojson

,它使我们可以在Google地图中显示一些不错的geoJSON,如下所示:

dev machine in production mode - all good

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

  

maps -.... js:27未捕获的SyntaxError:意外的令牌导出

和Firefox上的类似错误(尽管在不同的行上):

  

SyntaxError:导出声明​​只能出现在模块maps -... js:1

的顶层

syntax error involving export when same system is deployed on heroku

我一直在与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的运行方式有所不同的想法,我希望听到它们,所以我可以将其锁定或研究如何在本地复制该错误。

非常感谢

1 个答案:

答案 0 :(得分:0)

Heroku支持人员说这里的问题是在资产管道中使用npm,更好的方法是使用webpacker