javascript - rails资产管道javascript“SyntaxError:意外的令牌导出”
问题描述
我有一个可爱的 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 支持说这里的问题是将 npm 与资产管道一起使用,更好的方法是使用 webpacker
推荐阅读
- r - 有没有办法在 data.table 中滚动连接以匹配同时发生的多个观察?
- algorithm - 使用 FFT 查找所有可能的固定大小子集和
- docker - 如何让 EKS 与 CircleCI 一起工作?
- java - Java 未来
验证是成功还是失败? - adobe - AEM 样式类放置在 Paraformat 类中
- server - NestJS ServerMqtt 是客户端连接吗?不是服务器吗?
- javascript - SVG单向过渡
- sql-server - PowerShell New-AzSqlDatabaseImport - 0:无法访问存储帐户。请检查存储帐户名称和密钥,然后重试
- php - 在 PHP 8.0 上运行的 Laravel 5.8
- asp.net-mvc - 如何在服务器上存储分类广告网站图片?