NPM이 Heroku와 함께 실패하면 해결 방법(npm ERR! 시작 스크립트에서 실패).

4973 단어 nuxtnpmherokuexpress

중요한


  • 이 기사에서는 귀하가 nuxt-express starter template으로 작업한다고 가정합니다. 하지만 React와 Next에서 일어날 수도 있고 일반적으로 일어날 수도 있는 글로벌 이슈라고 생각합니다.
  • 솔루션 섹션으로 이동하면 됩니다. 나머지는 당신이 충분히 관심이 있다면입니다.

  • 지루한 이야기



    오랫동안 내 인생을 지옥으로 만든 이상한 문제입니다. NPM은 종속성을 설치하지 않습니다. 어떤 이유로 나는 간단하고 작동하는 Heroku를 좋아합니다. 그러나 Express와 함께 Nuxt를 사용하고 앱을 Heroku에 배포하기 시작했을 때 이 문제가 발생하기 시작했습니다. 하루 종일 내가 이런 일이 일어나게 하기 위해 무엇을 했는지 알아내려고 할 때마다 나는 아무것도 하지 않았다. 정상적인 배포입니다. 그런 다음 새 프로젝트를 만들고 이전 프로젝트의 모든 논리를 새 프로젝트로 복사하고 동일한 패키지를 설치합니다. 때로는 잘 작동하지 않아서 Heroku에서 새 앱을 만들고 작동할 때까지 같은 작업을 반복합니다. Vercel 또는 Portal Azure와 같은 다른 솔루션을 사용하는 경우도 있지만 무슨 뜻인지 알면 집처럼 느껴지지 않습니다. 그런데 오늘 드디어 이 문제를 해결할 방법을 찾았습니다.

    왜 이런 일이 발생합니까?





    왜 이런 일이 발생하는지 정확히 모르겠습니다. 그러나 Heroku Node.js support을 읽은 후 Heroku가 종속성을 설치하기 위해 실행되지 않는다는 것을 알게 되었습니다npm i. 대신 실행됩니다npm ci.

    둘의 차이점을 알고 싶다면 찾을 수 있습니다here. 그러나 간단히 말해서 npm installnpm ci를 사용하는 것의 주요 차이점은 다음과 같습니다.
  • 프로젝트에 기존 package-lock.json 또는 npm-shrinkwrap.json이 있어야 합니다.
  • 패키지 잠금의 종속성이 package.json의 종속성과 일치하지 않으면 패키지 잠금을 업데이트하는 대신 npm ci가 오류와 함께 종료됩니다.
  • npm ci는 한 번에 전체 프로젝트만 설치할 수 있습니다. 이 명령으로 개별 종속성을 추가할 수 없습니다.
  • node_modules가 이미 있는 경우 npm ci가 설치를 시작하기 전에 자동으로 제거됩니다.
  • 절대 package.json 또는 패키지 잠금에 쓰지 않습니다. 설치가 기본적으로 정지됩니다.

  • 그래서 Heroku를 사용하도록 구성npm i하고 앱을 배포할 때마다 모든 것을 다시 설치하도록 캐시를 비활성화했습니다.

    해결책



    먼저 내 Node 및 NPM 버전을 지정했습니다package.json. 해당 명령을 사용하여 정확한 버전을 알 수 있습니다.

    노드:

    node -v
    


    NPM의 경우:

    npm -v
    


    그런 다음 다음과 같이 package.json에 둘 다 추가하십시오.

    "engines": {
      "npm": <Your npm version>,
      "node": <Your node version>
    }
    


    앞에서 말했듯이 npm i 대신 npm ci를 사용하고 Heroku 캐시를 비활성화하도록 Heroku를 구성해야 합니다. 두 가지 방법으로 이를 수행할 수 있습니다.

  • 첫 번째로 Heroku CLI을 사용할 수 있습니다.

    1- Heroku 계정으로 로그인했는지 확인하십시오.

    heroku login
    

    2- 이 명령을 사용하여 트릭을 수행하십시오.

    $ heroku config:set USE_NPM_INSTALL=true -a <Your app name>
    $ heroku config:set NODE_MODULES_CACHE=false -a <Your app name>
    


  • 두 번째 방법은 Heroku 자체에서 수행하는 것입니다.

    1- Heroku 및 설정 탭에서 앱으로 이동합니다.



    2- '구성 변수 표시' 버튼으로 스크롤


  • 그런 다음 추가


    인덱스
    열쇠



    1
    NODE_MODULES_CACHE
    거짓

    2
    USE_NPM_설치
    진실


    당신은 이런 식으로 끝나야합니다


    다른 환경 변수를 추가하는 것을 잊지 마세요 :)
    나는 이것이 고통을 끝내기를 바랍니다.

    좋은 웹페이지 즐겨찾기