Ошибка при развертывании приложения рельсы с веб-пакетом в Heroku - PullRequest
0 голосов
/ 06 ноября 2018

Я не совсем понимаю порядок загрузки активов в веб-пакете.

Я создал такие файлы JavaScript, как этот.

// app/javascript/packs/foo.js
import somelibrary;
function someFunction() {
    // ...
}

<!-- app/views/layouts/application.html.erb -->
<%= javascript_pack_tag 'foo' %>

Это прекрасно работает в localhost, но когда я развернул его на Heroku, это вызвало ошибку компиляции, которая сказала, что Could not find somelibrary (извините, я потерял точное сообщение об ошибке).

И я попробовал это вместо одного, оно работает как на локальном хосте, так и на Heroku.

// app/javascript/components/foo.js
import somelibrary;
function someFunction() {
    // ...
}
export { someFunction };

// app/javascript/packs/application.js
import { someFunction } from '../components/foo.js';
someFunction();

<!-- app/views/layouts/application.html.erb -->
<%= javascript_pack_tag 'application' %>

1 Ответ

0 голосов
/ 06 ноября 2018

Webpack попытается создать «пачку» для каждого javascript или аналогичного файла, найденного внутри app/javascript/packs, то есть файлов, которые вам могут потребоваться при использовании javascript_pack_tag.

Таким образом, в этом контексте app/javascript/packs/foo.js компилируется один и должен разрешать import somelibrary; самостоятельно, тогда как app/javascript/components/foo.js компилируется как часть app/javascript/packs/application.js (где это требуется) и каким-то образом может загружать ваши библиотека.

Вы можете попробовать создать ресурсы вручную, чтобы увидеть все пакеты, сгенерированные веб-пакетом, и обнаружить ошибки компиляции перед развертыванием, или просто поместить все ваши компоненты и другие исходные файлы в другую папку, отличную от app/javascript/packs.

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