WINDOW-SERVER/ELLOR LOG

PM2 Window server error (C:\PROGRAM FILES\NODEJS\NPM.CMD:1, :: Created by npm, please don't edit manually., SyntaxError: Unexpected token ':')

  • -
λ°˜μ‘ν˜•

πŸ–₯️ Windows 10μ—μ„œ λ°œμƒν•˜λŠ” 문제

ν•˜μ§€λ§Œ 같은 λͺ…λ Ήμ–΄λ₯Ό Windows 10μ—μ„œ μ‹€ν–‰ν•˜λ©΄ λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμ–΄μš”. 예λ₯Ό λ“€μ–΄, pm2 ls둜 μƒνƒœλ₯Ό ν™•μΈν•˜λ©΄ errored μƒνƒœκ°€ λœ¨λ©΄μ„œ λ‹€μŒκ³Ό 같은 였λ₯˜κ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€:

C:\PROGRAM FILES\NODEJS\NPM.CMD:1, :: Created by npm, please don't edit manually., SyntaxError: Unexpected token ':'

C:\Users\Administrator\.pm2\logs\testame-out.log last 15 lines:
C:\Users\Administrator\.pm2\logs\testame-error.log last 15 lines:
0|testame  | C:\PROGRAM FILES\NODEJS\NPM.CMD:1
0|testame  | :: Created by npm, please don't edit manually.
0|testame  | ^
0|testame  |
0|testame  | SyntaxError: Unexpected token ':'
0|testame  |     at Object.compileFunction (node:vm:360:18)
0|testame  |     at wrapSafe (node:internal/modules/cjs/loader:1088:15)
0|testame  |     at Module._compile (node:internal/modules/cjs/loader:1123:27)
0|testame  |     at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
0|testame  |     at Module.load (node:internal/modules/cjs/loader:1037:32)
0|testame  |     at Module._load (node:internal/modules/cjs/loader:878:12)
0|testame  |     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
0|testame  |     at node:internal/main/run_main_module:23:47
0|testame  |
0|testame  | Node.js v18.12.0
λ°˜μ‘ν˜•

πŸ€” 원인

Windowsμ—μ„œ PM2κ°€ npm λͺ…λ Ήμ–΄λ₯Ό 직접 μ‹€ν–‰ν•  λ•Œ ν˜Έν™˜μ„± λ¬Έμ œκ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ΄μ—μš”. λ”°λΌμ„œ μ•½κ°„μ˜ 우회 μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€!


βœ… Windows 10μ—μ„œ PM2 ν•΄κ²° 방법

Windowsμ—μ„œ PM2λ₯Ό μ •μƒμ μœΌλ‘œ μ‚¬μš©ν•˜λ €λ©΄ λ‹€μŒ 단계λ₯Ό λ”°λΌμ£Όμ„Έμš”:

1️⃣ ν”„λ‘œμ νŠΈ λ£¨νŠΈμ— app.js 생성

app.jsλΌλŠ” νŒŒμΌμ„ ν”„λ‘œμ νŠΈ 폴더에 λ§Œλ“€μ–΄μ£Όμ„Έμš”.

2️⃣ app.js에 μ‹€ν–‰ μ½”λ“œ μΆ”κ°€

μ•„λž˜ μ½”λ“œλ₯Ό app.js에 μž…λ ₯ν•˜μ„Έμš”. 이 μ½”λ“œλŠ” npm run startλ₯Ό μ‹€ν–‰ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€:

const exec = require('child_process').exec;
const path = require('path');

const client = exec('npm run start', {
  windowsHide: true,
  cwd: path.join(__dirname, './'),
});

client.stdout.pipe(process.stdout);
client.stderr.pipe(process.stderr);

3️⃣ PM2둜 μ‹€ν–‰ν•˜κΈ°

CMD(λͺ…λ Ή ν”„λ‘¬ν”„νŠΈ)μ—μ„œ ν”„λ‘œμ νŠΈ ν΄λ”λ‘œ μ΄λ™ν•œ ν›„, λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μž…λ ₯ν•˜μ„Έμš”:

pm2 start app.js

이제 였λ₯˜ 없이 μ •μƒμ μœΌλ‘œ μ„œλ²„κ°€ μ‹€ν–‰λ©λ‹ˆλ‹€! πŸŽ‰


πŸ”„ λ¦¬λˆ…μŠ€ vs Windows μ‚¬μš©λ²• 비ꡐ

운영체제 μ‹€ν–‰ 방법

λ¦¬λˆ…μŠ€ pm2 start npm --name "appName" -- run start
Windows app.js νŒŒμΌμ„ λ§Œλ“€μ–΄ μ‹€ν–‰ν•΄μ•Ό 함 (pm2 start app.js)

즉, λ¦¬λˆ…μŠ€λŠ” λ°”λ‘œ μ‹€ν–‰ κ°€λŠ₯ν•˜μ§€λ§Œ, Windowsμ—μ„œλŠ” μΆ”κ°€ 섀정이 ν•„μš”ν•˜λ‹€λŠ” 점을 κΈ°μ–΅ν•˜μ„Έμš”! πŸ”₯


🎯 마무리

PM2λŠ” μ„œλ²„ μš΄μ˜μ„ 더 쉽고 μ•ˆμ •μ μœΌλ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” λ©‹μ§„ λ„κ΅¬μ˜ˆμš”. ν•˜μ§€λ§Œ μš΄μ˜μ²΄μ œμ— 따라 μ‚¬μš©λ²•μ΄ μ•½κ°„ λ‹€λ₯Ό 수 μžˆμœΌλ‹ˆ, ν™˜κ²½μ— λ§žλŠ” 섀정을 μ μš©ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

PM2λ₯Ό 잘 ν™œμš©ν•΄μ„œ μ—¬λŸ¬λΆ„μ˜ ν”„λ‘œμ νŠΈλ₯Ό 무쀑단 μ„œλΉ„μŠ€λ‘œ μš΄μ˜ν•΄λ³΄μ„Έμš”! πŸš€

 

 

 

ν•¨κ»˜λ³΄λ©΄ 쒋은글

[TypeScript] ν”„λ‘ νŠΈμ—”λ“œ 개발자λ₯Ό μœ„ν•œ SOLID 원칙. (feat.νƒ€μž…μŠ€ν¬λ¦½νŠΈ)

 

[TypeScript] ν”„λ‘ νŠΈμ—”λ“œ 개발자λ₯Ό μœ„ν•œ SOLID 원칙. (feat.νƒ€μž…μŠ€ν¬λ¦½νŠΈ)

S.O.L.I.D 원칙 νƒ€μž…μŠ€ν¬λ¦½νŠΈ μ½”λ“œ 예제둜 μ΄ν•΄ν•˜κΈ°κΉ¨λ—ν•˜κ³  μœ μ§€λ³΄μˆ˜ν•˜κΈ° μ‰¬μš΄ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것은 λ‹¨μˆœνžˆ λ™μž‘ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” κ²ƒλ§ŒνΌ μ€‘μš”ν•©λ‹ˆλ‹€.S.O.L.I.D 원칙은 μ‹œκ°„μ΄ μ§€λ‚˜λ„ μ‰½κ²Œ μ‘°

intelloper.tistory.com

[JavaScript] ν”„λ‘ νŠΈμ—”λ“œ 개발자λ₯Ό μœ„ν•œ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°(functional programming)

 

[JavaScript] ν”„λ‘ νŠΈμ—”λ“œ 개발자λ₯Ό μœ„ν•œ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°(functional programming)

JavaScript 개발자λ₯Ό μœ„ν•œ ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°JavaScriptλŠ” λ‹€μ–‘ν•œ μŠ€νƒ€μΌλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλŠ” μœ μ—°ν•œ μ–Έμ–΄μž…λ‹ˆλ‹€. λͺ…λ Ήν˜•(imperative), 객체 μ§€ν–₯(object-oriented), 그리고 ν•¨μˆ˜ν˜•(functional) ν”„λ‘œκ·Έλž˜λ°

intelloper.tistory.com

μ‹œλ‹ˆμ–΄ κ°œλ°œμžλ“€μ€ 이런거 μ•ˆν•œλŒ€μš”. (개발자 λ¬Όκ²½λ ₯ λ°©μ§€)

 

μ‹œλ‹ˆμ–΄ κ°œλ°œμžλ“€μ€ 이런거 μ•ˆν•œλŒ€μš”. (개발자 λ¬Όκ²½λ ₯ λ°©μ§€)

μ£Όλ‹ˆμ–΄ κ°œλ°œμžμ—μ„œ 멈좰 μžˆμ„μˆ˜λ§Œμ€ μ—†λ‹€! μ—°μ°¨λŠ” μŒ“μ΄λŠ”λ° μžμ‹ μ˜ μ‹€λ ₯도 μŒ“μ—¬μ•Όκ² μ£ ? μ‹œλ‹ˆμ–΄ κ°œλ°œμžλ“€μ€ μ–΄λ–»κ²Œ ν•˜λŠ”μ§€ νƒκ΅¬ν•΄λ΄…μ‹œλ‹€.λͺ¨λ“  μ‹œλ‹ˆμ–΄ κ°œλ°œμžλ„ μ²˜μŒμ—λŠ” 기초적인 μ½”λ”© μ‹€λ ₯κ³Ό

intelloper.tistory.com

 

λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.