В моем сценарии приложения Node мне нужен специальный модуль, который имеет свои собственные зависимости. В локальной разработке все это работает нормально, и все работает так, как ожидалось. Однако, когда я хочу развернуть свое приложение в целом через развертывание приложения gcloud, возникает следующая ошибка:
Updating service [myapp]...failed. ERROR: (gcloud.app.deploy) Error Response: [9] Application startup error: > [email protected] start /app > node server.js internal/modules/cjs/loader.js:584 throw err; ^ Error: Cannot find module 'mycustommodule'
Это как-то связано с тем, что, возможно, gcloud пытается загрузить все модули узла для себя с сервера NPM и, следовательно, явно не может найти мой локальный модуль? Я не могу понять, как включить свои собственные модули узлов (которые также имеют свои собственные зависимости).
Я благодарю вас за то, что вы подумали вместе со мной заранее. Помощь очень ценится.
Когда вы запускаете команду gcloud app deploy
, SDK автоматически создает файл .gcloudignore
, который в значительной степени работает как .gitignore
, и отфильтровывает некоторые файлы или каталоги, которые не будут развернуты.
.gcloudignore
по умолчанию включает каталог node_modules/
, поэтому ваши установленные зависимости не загружаются вместе с вашим кодом. Вы можете удалить эту запись из .gcloudignore и повторить попытку развертывания.
Вы можете сделать это таким образом, да. Или, если вы уже запустили развертывание приложения gcloud, отредактируйте файл .gcloudignore, чтобы удалить папку node_modules.
Где/как я могу увидеть, существует ли уже такой файл?
Вы должны увидеть, что он работает с ls -al в папке, из которой вы запускаете развертывание приложения gcloud. Если его нет, вы можете просто создать его самостоятельно (не забудьте точку)
Хм, я этого не знал. Я собираюсь попробовать это, как только у меня будет возможность (плюс вознаградить за переполнение стека). Если я правильно понимаю, мне нужно развернуть с флагом --ignore-file=[file], указывающим на пустой файл .gcloudignore, который перезапишет тот, который создается автоматически?