JavaScript-конвейер ресурсов "Синтаксическая ошибка: неожиданный экспорт токена" - PullRequest
2 голосов
/ 15 мая 2019

У меня есть прекрасная библиотека топойсон, работающая для меня в приложении на Rails локально:

https://github.com/topojson/topojson

, и это позволяет нам показывать несколько хороших geoJSON на карте Google, например:

dev machine in production mode - all good

Я показываю его с открытым файлом map.js, поскольку, похоже, именно в этом проблема при развертывании на heroku. На героку файл map.js выдает ошибку на chrome:

maps -.... js: 27 Uncaught SyntaxError: Неожиданный экспорт токена

и похожая ошибка (хотя и в другой строке) в Firefox:

SyntaxError: объявления об экспорте могут появляться только на верхнем уровне карты модуля -... 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 компилировать по-другому? На героку имеем следующее:

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

, но в статических ресурсах, скомпилированных локально, нет упоминаний об оскорбительных ключевых словах export, но они есть в файлах на сервере heroku. Я пробовал все виды методов, чтобы гарантировать, что я удаляю кэшированные файлы и что изменения, которые я делаю, отражаются как локально, так и на heroku.

Я также изучал способы попробовать и обработать ключевое слово экспорта (новое в es6), но это похоже на еще более глубокую кроличью нору, то есть звездочки 4 или веб-пакет или подобное.

Во всяком случае, если у кого-то есть мысли о других вещах, которые могут привести к тому, что heroku будет работать по-другому, я бы хотел их услышать, поэтому я могу либо заблокировать их, либо решить, как локально воспроизвести ошибку.

Большое спасибо заранее

1 Ответ

0 голосов
/ 04 июня 2019

Поддержка Heroku говорит о том, что проблема здесь заключается в использовании npm с конвейером ресурсов, и лучшим подходом было бы использование webpacker

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...