reactjs - הקמת מונורפו עבור פרויקט React/Next/express/typescript עם lerna ו- pm2
אני עובד על פרויקט ואני רוצה לבנות עבורו ארכיטקטורת מונורפו.
כרגע יש לי שני חבילות:
- front/ מכיל את אפליקציית React(next) שלי עם TypeScript
- server/ הוא אפליקציית Express המשתמשת גם ב-TypeScript
הנה ארכיטקטורת הפרויקט שלי :
├── Makefile
├── ecosystem.config.js
├── lerna.json
├── package-lock.json
├── package.json
├── packages
│ ├── front
│ │ ├── components
│ │ ├── interfaces
│ │ ├── package-lock.json
│ │ ├── package.json
│ │ ├── pages
│ │ ├── tsconfig.json
│ │ ├── utils
│ │ └── yarn.lock
│ └── server
│ ├── package.json
│ ├── src
│ │ ├── app.ts
│ │ └── index.ts
│ ├── tsconfig.json
│ └── yarn.lock
└── yarn.lock
הקובץ ecosystem.config.js הוא המקום שבו אני מתאר את כל התהליכים של pm2 :
module.exports = {
apps: [
{
name: "Front",
cwd: "./packages/front",
script: "yarn",
args: "run dev",
interpreter: "bash",
instances: 1,
max_memory_restart: "1G",
env: {
NODE_ENV: "development",
REACT_APP_API_URL: "http://localhost:8080",
},
env_production: {
NODE_ENV: "production",
}
},
{
name: "Server",
cwd: "./packages/server",
script: "yarn",
args: "run dev",
instances: 1,
interpreter: "bash",
autorestart: true,
watch: true,
max_memory_restart: "1G",
env: {
NODE_ENV: "development",
PORT: "8080",
},
env_production: {
NODE_ENV: "production",
PORT: "8080",
}
}
]
}
זהו הקובץ שלי lerna.json
{
"npmClient": "yarn",
"packages": [
"packages/*"
],
"useWorkspaces": true,
"version": "0.0.0"
}
Makefile שבו אני מגדיר את כל הפקודות שלי:
## ------------
## Setup
## ------------
install:
yarn install
npx lerna bootstrap
## ------------
## Dev
## ------------
start:
npx pm2 start
stop:
npx pm2 delete all
כאשר אני מריץ את הפקודה make start (npx pm2 start), המצב של שני התהליכים מוצג כעצור. ואני לא מבין למה ..
npx pm2 start
[PM2][WARN] Applications Front, Server not running, starting...
[PM2] App [Front] launched (1 instances)
[PM2] App [Server] launched (1 instances)
┌─────┬───────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │
├─────┼───────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0 │ Front │ default │ 0.35.3 │ fork │ 10947 │ 0 │ 1 │ stopped │ 0% │ 0b │ max… │ disabled │
│ 1 │ Server │ default │ 0.35.3 │ fork │ 10949 │ 0 │ 1 │ stopped │ 0% │ 0b │ max… │ enabled │
└─────┴───────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
וזה מה שאני מקבל אחרי הרצת npx pm2 logs :
[TAILING] Tailing last 15 lines for [all] processes (change the value with --lines option)
/home/maximeoger/.pm2/pm2.log last 15 lines:
PM2 | 2020-11-17T16:57:42: PM2 log: App [Front:0] starting in -fork mode-
PM2 | 2020-11-17T16:57:42: PM2 log: App [Front:0] online
PM2 | 2020-11-17T16:57:42: PM2 log: App [Server:1] exited with code [2] via signal [SIGINT]
PM2 | 2020-11-17T16:57:42: PM2 log: App [Server:1] starting in -fork mode-
PM2 | 2020-11-17T16:57:42: PM2 log: App [Server:1] online
PM2 | 2020-11-17T16:57:42: PM2 log: App [Front:0] exited with code [2] via signal [SIGINT]
PM2 | 2020-11-17T16:57:42: PM2 log: App [Front:0] starting in -fork mode-
PM2 | 2020-11-17T16:57:42: PM2 log: App [Front:0] online
PM2 | 2020-11-17T16:57:42: PM2 log: App [Server:1] exited with code [2] via signal [SIGINT]
PM2 | 2020-11-17T16:57:42: PM2 log: App [Server:1] starting in -fork mode-
PM2 | 2020-11-17T16:57:42: PM2 log: App [Server:1] online
PM2 | 2020-11-17T16:57:42: PM2 log: App [Front:0] exited with code [2] via signal [SIGINT]
PM2 | 2020-11-17T16:57:42: PM2 log: Script /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn had too many unstable restarts (16). Stopped. "errored"
PM2 | 2020-11-17T16:57:42: PM2 log: App [Server:1] exited with code [2] via signal [SIGINT]
PM2 | 2020-11-17T16:57:42: PM2 log: Script /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn had too many unstable restarts (16). Stopped. "errored"
/home/maximeoger/.pm2/logs/Front-out-0.log last 15 lines:
/home/maximeoger/.pm2/logs/Server-out-1.log last 15 lines:
/home/maximeoger/.pm2/logs/Front-error-0.log last 15 lines:
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 7: var: command not found
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: syntax error near unexpected token `('
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: `var majorVer = parseInt(ver.split('.')[0], 10);'
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 3: /bin: Is a directory
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 4: /bin: Is a directory
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 5: use strict: command not found
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 7: var: command not found
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: syntax error near unexpected token `('
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: `var majorVer = parseInt(ver.split('.')[0], 10);'
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 3: /bin: Is a directory
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 4: /bin: Is a directory
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 5: use strict: command not found
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 7: var: command not found
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: syntax error near unexpected token `('
0|Front | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: `var majorVer = parseInt(ver.split('.')[0], 10);'
/home/maximeoger/.pm2/logs/Server-error-1.log last 15 lines:
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 7: var: command not found
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: syntax error near unexpected token `('
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: `var majorVer = parseInt(ver.split('.')[0], 10);'
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 3: /bin: Is a directory
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 4: /bin: Is a directory
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 5: use strict: command not found
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 7: var: command not found
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: syntax error near unexpected token `('
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: `var majorVer = parseInt(ver.split('.')[0], 10);'
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 3: /bin: Is a directory
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 4: /bin: Is a directory
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 5: use strict: command not found
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 7: var: command not found
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: syntax error near unexpected token `('
1|Server | /home/maximeoger/.nvm/versions/node/v15.2.0/bin/yarn: line 8: `var majorVer = parseInt(ver.split('.')[0], 10);'
אתה יכול לעזור לי להבין את השגיאה הזו? כל עזרה תוערך מאוד!
תודה,
מקסים