Сбой сборки Gatsby в mozjpeg

#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:

Они предлагают:

  • Установка 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, но я хотел, чтобы это было где-нибудь опубликовано, чтобы у другого человека с этой проблемой было.