Проблема сборки Node-sass с Docker

#node.js #angular #docker #node-modules #node-sass

#node.js #угловой #docker #узлы-модули #узел-sass

Вопрос:

Я работаю в Docker над контейнеризацией приложения Angular 5. Это приложение использует node-sass 4.7.2. Приложение отлично работает в среде Windows. Во время «установки npm» он загружает node-sass или создает его, используя sass-library-path, определенный в файле .npmrc.

Но в процессе создания образа docker возникает много проблем. Он автоматически пытается загрузить файл binding.node из https://github.com/sass/node-sass/releases/download/v4.7.2/linux-x64-72_binding.node Но для linux-x64-72 нет выпуска. Итак, он загружает фиктивный файл (размером около 4 КБ) и выдает ошибку «недопустимый заголовок ELF».

Если я укажу некоторый допустимый URL в sass-binary-path(https://github.com/sass/node-sass/releases/download/v4.7.2/linux-x64-59_binding.node) , он выдает ошибку «модуль не найден».

Я тоже пробовал npm rebuild node-sass . Я также видел много ответов из Интернета. Многие ответы предлагали мне скопировать модули узлов из локальной среды. Вы знаете, это никогда не вариант с Docker. Я не могу просить разработчиков фиксировать модули узлов также в репозитории.

Есть ли какой-либо способ решить эту проблему? или есть какое-либо простое решение для ее решения в приложении angular, например, не использовать node-sass?

Комментарии:

1. можете ли вы поделиться своим файлом DockerFile

Ответ №1:

В package.json была указана версия узла sass. Для соответствующей версии node-sass нет библиотеки, доступной для ОС linux-x64-72_binding.node. Итак, я обновил версию node-sass в package.json, для которой была доступна библиотека Linux.

Затем он загрузил файл без каких-либо проблем.