#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.
Затем он загрузил файл без каких-либо проблем.