РЕДАКТИРОВАТЬ. После попытки просто установить puppeteer на мою машину с использованием старой версии узла (8.1.0) выдается та же ошибка. Поэтому проблема должна заключаться в том, что при подключении к машине загружается неправильная версия узла. Тогда возникает вопрос: как запустить хук после развертывания pm2, используя правильную версию node.js?
Я получаю очень странную ошибку при попытке развернуть мое веб-приложение с помощью pm2
deploy. Ошибка возникает во время перехвата post-install
процесса развертывания pm2
, когда yarn
устанавливает различные пакеты на мою удаленную машину (Ubuntu 18.04).
Ошибка выглядит следующим образом:
....The rest of the yarn installation...
[4/4] Building fresh packages...
error /home/harrison/gql3.0_processors/source/node_modules/puppeteer: Command failed.
Exit code: 1
Command: node install.js
Arguments:
Directory: /home/harrison/gql3.0_processors/source/node_modules/puppeteer
Output:
/home/harrison/gql3.0_processors/source/node_modules/puppeteer/install.js:175
} catch {
^
SyntaxError: Unexpected token {
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:188:16)
at bootstrap_node.js:609:3
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
post-deploy hook failed
Deploy failed
Это происходит из файла install.js
в каталоге puppeteer
моей папки node_modules
, которая является зависимостью, которую я использую для своего проекта.
Я склонен думать, что это связано с какой-то ошибкой с моей версией узла, когда я устанавливаю приложение удаленно? Может ли кто-нибудь предложить некоторые рекомендации?
Мой файл развертывания pm2
выглядит следующим образом (для получения дополнительной информации перейдите сюда: https://pm2.keymetrics.io/docs/usage/application-declaration/)
require("dotenv").config({ path: `./envs/.env.production` });
const path = require("path");
let hosts = process.env.HOSTS.split(",");
let hostsBashArgs = process.env.HOSTS.replace(/,/g, " "); // Pass as args to bash script
module.exports = {
apps: [
{
name: process.env.APP_NAME,
args: ["--color"],
interpreter: process.env.NODE_PATH, // Installation of node on my remote machine, it's ––> `/home/harrison/.nvm/versions/node/v13.7.0/bin/`
cwd: path.resolve(process.env.PROJECT_PATH, "current"), // Where post-deploy runs
script: "dist/index.js", // Webpacked server file
instances: process.env.INSTANCES || 0,
exec_mode: "cluster",
env: {
...process.env,
},
},
],
deploy: {
production: {
user: "harrison",
host: hosts,
key: "~/.ssh/id_rsa2",
ref: "origin/master",
repo: process.env.GIT_REPO,
path: process.env.PROJECT_PATH,
"pre-deploy-local": `./deployEnvs.sh ${process.env.PROJECT_PATH} ${hostsBashArgs}`,
//// THIS IS THE STEP WHICH FAILS
"post-deploy": `yarn install --ignore-engines && \
yarn prod:build && \
yarn prod:serve`,
},
},
};