[Firebase]Cloud Functions for Firebase에서 runtime을 Node.js 12로 설정하고 배포하는 방법

소개



Cloud Functions for Firebase에서 배포하는 동안 노드 버전 주위에 오류가 발생하여 빠졌기 때문에 요약했습니다.
간결하게 설정하는 방법을 소개한 후, 빠져나갈 곳을 말미에 기재해 둡니다.

runtime을 Node.js 12로 설정하고 배포하는 방법



방법은 모두 2 가지 있습니다.

1. package.json에 작성하는 방법



다음과 같이 engines에 "node":"12"라고 기재한다
{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {

  },
  "engines": {
    "node":"12"
  },
  "dependencies": {

  },
  "devDependencies": {

  },
  "private": true
}

2. firebase.json에 작성하는 방법



firebase functions를 init하면 init한 현재 디렉토리에 firebase.json이 생성된다고 생각합니다. 거기에 다음과 같은 설명을 더하여 런타임을 지정할 수 있습니다!
{
  "functions": {
    "runtime": "nodejs12",
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" run lint"
    ]
  }
}

v8.6.0에서 변경이 있었던 것 같습니다. or라고 쓰여 있듯이 package.json에서 할 수있는 방법도 사용할 수 있습니다.


공식 릴리스 노트

런타임 지정이 성공했을 때 deploy 로그



아래와 같이, creating Node.js 12 ~~~ 라고 나와 있으면 지정되어 있습니다!


대전제・요주의



1. Firebase 플랜을 Blaze 플랜(종량 과금 플랜)으로 하는 것



2. 글로벌 설치되어 있는 firebase-tools가 최신인 것!



이것이 오래된 상태이면 다음과 같은 오류가 발생합니다.
Error: package.json in functions directory has an engines field which is unsupported. The only valid choices are: {"node": "8"} and {"node": "10"}.

3. 사용중인 라이브러리가 필요로하는 노드의 버전 요구 사항을 로컬 환경이 충족해야합니다!



deploy이므로 package.json에 올바르게 런타임을 지정하면 클라우드에서 문제없이 빌드 할 것이라고 생각했습니다. 공부합니다.)

자신은 사용하고 있는 라이브러리가 node v12이상을 요구하고 있었음에도 불구하고, 로컬의 node의 버젼이 v10계이었기 때문에, 연장해 이하의 에러가 나와 버렸습니다.
Error: There was an unknown problem while trying to parse function triggers. Please ensure you are using Node.js v6 or greater.



자신은 nodebrew를 사용하고 있었으므로 아래에서 해결했습니다. 버전은 자신의 라이브러리 요구 사항에 맞게 잘 변경하십시오.
nodebrew use 12.20.1

새로 만든 환경에 firebase-tools가 없는 경우 다음도 실행
npm i -g firebase-tools

참고



공식 릴리스 노트
Cloud Functions for Firebase에서 Node.js 12를 사용하는 방법

좋은 웹페이지 즐겨찾기