#node.js #linux #docker #npm #gatsby
#node.js #linux #docker #npm #gatsby
Вопрос:
Со вчерашнего дня я не могу развернуть свой сайт Gatsby на нашем сервере, build жалуется на библиотеку mozjpeg. Кто-нибудь сталкивался с этой ошибкой раньше?
Я пытался:
- блокировка gatsby-cli
- добавление
automake
пакета Linux - добавление
libtools
пакета Linux - размораживание блокировки пряжи
- установка зависимостей без файла блокировки
Но, похоже, ничего не помогло, ошибка выглядит следующим образом:
error /node_modules/mozjpeg: Command failed.
Exit code: 1
Command: node lib/install.js
Arguments:
Directory: /node_modules/mozjpeg
Output:
⚠ spawn /node_modules/mozjpeg/vendor/cjpeg ENOENT
⚠ mozjpeg pre-build test failed
ℹ compiling from source
✖ Error: Command failed: /bin/sh -c ./configure --enable-static --disable-shared --disable-dependency-tracking --with-jpeg8 --prefix="/node_modules/mozjpeg/vendor" --bindir="/node_modules/mozjpeg/vendor" --libdir="/node_modules/mozjpeg/vendor"
ОС
Ubuntu 16.04.6
Узел
12.14
Gatsby
2.19.7
Ответ №1:
Согласно некоторым потокам GitHub:
- https://github.com/JeffreyWay/laravel-mix/issues/1271
- https://github.com/mozilla/mozjpeg/issues/244
- https://github.com/imagemin/imagemin/issues/168
Они предлагают:
- Установка
nasm
(настоятельно рекомендуется) - Если приведенное выше решение не работает, установите
automake
,autoconf
,libtool
,dpkg
,pkgconfig
,libpng
,libpng-dev
,g
- Удалить кэш
Комментарии:
1. Комбинация всего этого решила проблему! Я посещал все ссылки раньше, но кэш отсутствовал. Спасибо!
Ответ №2:
Та же проблема возникает при развертывании на страницах GitLab с помощью docker image: "node:lts-alpine"
. Сбой происходит из-за yarn:install
невозможности сборки mozjpeg
.
ошибка /builds/my_project/gatsby/node_modules/mozjpeg: ошибка команды.
Чтобы исправить это, добавьте эти строки в .gitlab-ci.yml
before_script:
- apk add make nasm autoconf automake libtool dpkg pkgconfig libpng libpng-dev g
Ожидаемый результат
[4/4] Building fresh packages...
Done in 170.33s.
Saving cache for successful job
00:27
Creating cache master-1...
node_modules/: found 82747 matching files and directories
WARNING: .cache/: no matching files
WARNING: public/: no matching files
Uploading cache.zip to https://storage.googleapis.com/gitlab-com-runners-cache/project/...
Created cache
Cleaning up file based variables
00:01
Job succeeded
Фактический результат
[4/4] Building fresh packages...
error /builds/my_project/gatsby/node_modules/mozjpeg: Command failed.
Exit code: 1
Command: node lib/install.js
Arguments:
Directory: /builds/my_project/gatsby/node_modules/mozjpeg
Output:
⚠ spawn /builds/my_project/gatsby/node_modules/mozjpeg/vendor/cjpeg ENOENT
⚠ mozjpeg pre-build test failed
ℹ compiling from source
✖ Error: Command failed: /bin/sh -c autoreconf -fiv
/bin/sh: autoreconf: not found
at /builds/my_project/gatsby/node_modules/bin-build/node_modules/execa/index.js:231:11
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:93:5)
at async Promise.all (index 0)
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
Cleaning up file based variables
00:01
ERROR: Job failed: exit code 1
Окружающая среда
Информация об ОС из: image: "node:lts-alpine"
package.json
Информация:
npmPackages:
gatsby: ^2.31.1 => 2.31.1
gatsby-image: ^2.10.0 => 2.10.0
gatsby-plugin-manifest: ^2.11.0 => 2.11.0
gatsby-plugin-material-ui: ^2.1.10 => 2.1.10
gatsby-plugin-offline: ^3.9.0 => 3.9.0
gatsby-plugin-react-helmet: ^3.9 => 3.9.0
gatsby-plugin-sharp: ^2.13.4 => 2.13.4
gatsby-source-filesystem: ^2.10.0 => 2.10.0
gatsby-theme-firebase: ^1.0.10 => 1.0.10
gatsby-transformer-sharp: ^2.11.0 => 2.11.0
npmGlobalPackages:
gatsby-cli: 2.17.0
Комментарии:
1. Обратите внимание, что
make
это необходимо, поэтому, если его нет в образе docker, он должен быть установлен.
Ответ №3:
Я только что столкнулся с этой же проблемой в Alpine в Dockerfile. Оказывается, ему нужно было все, что вам обычно нужно для сборки из исходного кода. У Alpine есть пакет с именем alpine-apk
, который я добавил в Dockerfile. Это исправило все последующие проблемы, с которыми я сталкивался mozjpeg
. Я понимаю, что на оригинальном постере не работает Alpine, но я хотел, чтобы это было где-нибудь опубликовано, чтобы у другого человека с этой проблемой было.