보통 NestJS는 서버 가동 시 npm (run) start나 npm run dev를 쓰는 게 일반적이라고 알고 있다.

그런데 우리 프로젝트는 특이하게도 npm run start:local이라는 스트립트로 서버를 가동한다. 

코드를 입력하고 가동을 하려는데? 

npm ERR! Missing script: "start:local"
npm ERR!
npm ERR! To see a list of scripts, run:
npm ERR!   npm run
npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\LG\AppData\Local\npm-cache_logs\2023-10-16T03_47_01_257Z-debug-0.log

npm ERR! Missing script: "start:local" 오류는 "start:local"이라는 스크립트가 package.json 파일에 정의되지 않았기 때문에 발생한다. 따라서  package.json 파일의 "scripts" 섹션 내에 "start:local" 스크립트를 추가해야 한다.

"scripts": {
    // 이전 스크립트들...
    // ...
    
    // 여기에 start:local 스크립트 추가
    // index.js 파일을 직접 실행합니다.
    
   	"start:local": "node index.js"
}

이런식으로 수정해주면 된다. 개발 환경에서 로컬 서버를 실행하기 위해 이렇게 실행하는 것이다.

그런데 문제는 이것 뿐이 아니었다. 

 

package.json 파일을 살펴보니 "dependencies" 섹션에서 "-" 패키지를 썼는데 이는 유효하지 않다. "g"패키지도 마찬가지. 또한, "devDependencies" 섹션에서 "@nestjs/cli", "@nestjs/schematics", 그리고 "@typescript-eslint/eslint-plugin"과 관련된 버전들은 최신 버전으로 업데이트되지 않았다. 마지막으로 제일 중요한 cross-env 패키지를 설치해야 하는데 하지 않았다. 이는 "start:local" 스크립트에서 사용되므로 꼭 필요하다.

{
  "name": ㅇㅇㅇㅇㅇ
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "MIT",
  "scripts": {
    // 스크립트들...
    // ...
    // 여기에 start:local 스크립트 추가
    // cross-env를 사용하여 NODE_ENV 환경 변수를 설정합니다.
   	"start:local": "cross-env NODE_ENV=local nest start --watch",
    
    // start:local-pm2, start:dev, start:prod 등의 스크립트도 그대로 두세요.
    
  },
  
  	// dependencies와 devDependencies는 여기에 있어야 합니다.
  
  	"dependencies": {
    	"@adminjs/express": "^5.0.1",
    	"@adminjs/nestjs": "^5.0.1",
    	"@adminjs/typeorm": "^4.0.",
        ... (다른 종속성들)
   },
   
   "devDependencies":{
       "@nestjs/cli":"^9.,8,.7,"
       "@nestjs/schematics":"^9.,8,.7,"
       ... (다른 개발 종속성들)
       
       // cross-env 추가
     	"cross-env":"^7.,0,.3"
   },
   
   // jest 설정 등 다른 부분은 그대로 두세요.
}

이렇게 변경해주고,

npm install -g cross-env

로 설치해 줘야 비로소 start:local 스크립트를 쓸 수 있게 된다.

+ Recent posts