Облачная сборка Google выдает ошибку с помощью NPM

# #google-app-engine #github #google-cloud-platform #google-cloud-build

Вопрос:

Я хочу автоматически создать свое приложение nextjs, используя облачную сборку Google. Однако триггер выдает ошибку после нажатия на мой репозиторий.

сообщение об ошибке:

 Starting Step #0
Step #0: Already have image (with digest): gcr.io/cloud-builders/npm
Step #0: 
Step #0: > next-kara@0.1.0 prepare /workspace
Step #0: > npm run gcp-build
Step #0: 
Step #0: 
Step #0: > next-kara@0.1.0 gcp-build /workspace
Step #0: > next build
Step #0: 
Step #0: sh: 1: next: not found
Step #0: npm ERR! code ELIFECYCLE
Step #0: npm ERR! syscall spawn
Step #0: npm ERR! file sh
Step #0: npm ERR! errno ENOENT
Step #0: npm ERR! next-kara@0.1.0 gcp-build: `next build`
Step #0: npm ERR! spawn ENOENT
Step #0: npm ERR! 
Step #0: npm ERR! Failed at the next-kara@0.1.0 gcp-build script.
Step #0: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Step #0: npm WARN Local package.json exists, but node_modules missing, did you mean to install?
Step #0: 
Step #0: npm ERR! A complete log of this run can be found in:
Step #0: npm ERR!     /builder/home/.npm/_logs/2021-04-18T13_48_44_437Z-debug.log
Step #0: npm ERR! code ELIFECYCLE
Step #0: npm ERR! errno 1
Step #0: npm ERR! next-kara@0.1.0 prepare: `npm run gcp-build`
Step #0: npm ERR! Exit status 1
Step #0: npm ERR! 
Step #0: npm ERR! Failed at the next-kara@0.1.0 prepare script.
Step #0: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
Step #0: npm WARN Local package.json exists, but node_modules missing, did you mean to install?
Step #0: 
Step #0: npm ERR! A complete log of this run can be found in:
Step #0: npm ERR!     /builder/home/.npm/_logs/2021-04-18T13_48_44_465Z-debug.log
Finished Step #0
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/npm" failed: step exited with non-zero status: 1
 

Моя облачная сборка.файл yaml выглядит так:

 steps:
- name: "gcr.io/cloud-builders/npm"
  args: ["install", "run", "prepare"] # "install added after comment"
- name: "gcr.io/cloud-builders/gcloud"
  args: ["app", "deploy", "app.yaml"]
timeout: "1600s"
 

И мой пакет.json:

 {
  "name": "next-kara",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "gcp-build": "next build",
    "prepare": "npm run gcp-build",
    "start": "next start -p $PORT",
    "preinstall": "node lock_node_version.js"
  }
 

Есть идеи? Приложение отлично работает в движке приложений Google, когда сценарии выполняются локально.

Спасибо

Обновить

Как и в комментариях, я также попытался выполнить триггер при переходе на версии узлов 14.0.0 и 14.10.0 (последняя сборка). То же поведение; выполняется локально приложение работает на движке приложений Google, но та же ошибка при выполнении с помощью триггера Github.

Ошибка после добавления «установить» в cloudbuild.файл yaml:

 Step #0: make: Leaving directory '/workspace/node_modules/contextify/build'
Step #0: gyp ERR! build error 
Step #0: gyp ERR! stack Error: `make` failed with exit code: 2
Step #0: gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
Step #0: gyp ERR! stack     at ChildProcess.emit (events.js:314:20)
Step #0: gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:276:12)
Step #0: gyp ERR! System Linux 5.4.0-1040-gcp
Step #0: gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
Step #0: gyp ERR! cwd /workspace/node_modules/contextify
Step #0: gyp ERR! node -v v14.10.0
Step #0: gyp ERR! node-gyp -v v5.1.0
Step #0: gyp ERR! not ok 
Step #0: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/watchpack-chokidar2/node_modules/fsevents):
Step #0: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
Step #0: npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.1.3 (node_modules/fsevents):
Step #0: npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.1.3: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
Step #0: 
Step #0: npm ERR! code ELIFECYCLE
Step #0: npm ERR! errno 1
Step #0: npm ERR! contextify@0.1.15 install: `node-gyp rebuild`
Step #0: npm ERR! Exit status 1
Step #0: npm ERR! 
Step #0: npm ERR! Failed at the contextify@0.1.15 install script.
Step #0: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
 

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

1. отсутствует шаг для «установки npm».

2. Я попробую, но получу еще одну ошибку (обновил свой вопрос). Но почему необходима установка npm, если при gcloud app deploy app.yaml локальном запуске сценария не требуется дополнительная установка npm?

3. установка npm необходима, потому что node_modules не являются частью репозитория или, в данном случае, образа. Процесс 1. извлеките исходный код 2. установите зависимости 3. Запустите код, так как другие ваши проблемы в основном связаны с некоторыми несоответствующими зависимостями. node-gyp rebuild удалите node_модули и повторите попытку

4. Вы разрабатываете на Mac? Ваша зависимость совместима только с Mac

5. @guillaumeblaquiere, я разрабатываю на Windows, но мои коллеги на Mac. Похоже, виртуальная машина App Engine работает в Linux. Тем не менее, у меня нет проблем с запуском приложения локально на моем компьютере с Windows.

Ответ №1:

Существует проблема с fsevent 1 и NodeJS 14

введите описание изображения здесь

Я рекомендую вам начать с исправления этого и использовать ту же версию NodeJS в вашей локальной среде. Последним контейнером npm cloud builder по умолчанию является node-14(последняя версия).

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

1. Привет, я установил версию 14.0.0, а также 14.10.0 (последняя версия сборки) локально и снова попытался запустить триггер. Однако я получаю ту же ошибку — ИМО кажется, что fsevent не является причиной ошибки. контекстуализация в связи с перестройкой узла-gyp выглядит как причина…

2. Перед использованием nodejs14 какую версию вы использовали локально? Вы пробовали это с помощью nodejs12 и заставляли его работать локально? Похоже, это проблема, связанная с версиями узлов, конфликтующими с пакетами, а не с облачной сборкой, поэтому я предлагаю вам протестировать локально более старые версии, пока вы не заставите их работать, прежде чем использовать облачную сборку, как упоминал @guillaume. Проблема в nodejs 14, поэтому я не понимаю, зачем обновляться до этой версии