programing

npm에서 Firebase를 사용하여 배포하는 중 오류 발생 -- 접두사 $RESOURCE_DIR 런 린트

bestprogram 2023. 6. 11. 11:04

npm에서 Firebase를 사용하여 배포하는 중 오류 발생 -- 접두사 $RESOURCE_DIR 런 린트

튜토리얼에 따라 Firebase 도구를 새로 설치했는데 첫 번째 Firebase 기능을 업로드하려고 합니다.파이어베이스를 실행할 때 초기화되는 hello-world 예제에서 이 문제가 발생했습니다(Init 동안 기능 CLI 기능만 설정).

대체할 경우$RESOURCE_DIRfirebase.json내 함수 폴더에서는 작동하지만, 물론 그것은 나쁜 관행이고 나는 적절한 것을 찾고 싶습니다.$RESOURCE_DIR작동하는 교체.

PS D:\workspace\firebase-functions> firebase deploy

    === Deploying to 'newagent-5221d'...

i  deploying functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path D:\workspace\firebase-functions\$RESOURCE_DIR\package.json
npm ERR! code ENOENT
npm ERR! errno -4058
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open 'D:\workspace\firebase-functions\$RESOURCE_DIR\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\dtlut\AppData\Roaming\npm-cache\_logs\2018-01-19T15_57_22_990Z-debug.log

Error: functions predeploy error: Command terminated with non-zero exit code4294963238

$RESOURCE_DIR을 %RESOURCE_DIR%로 대체해 보십시오.firebase.json파일.

멀티 플랫폼 솔루션

게시물에서 볼 수 있듯이, 현재 실행 중인 다양한 플랫폼에 대한 구성을 요약해 보겠습니다.

리눅스

"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint"
]

파워셸

"predeploy": [
"npm --prefix $Env:RESOURCE_DIR run lint"
]

Cmd.exe

"predeploy": [
"npm --prefix %RESOURCE_DIR% run lint"
]

이것은 당신의 클라우드 기능에 린트를 주기를 원하는데, 이것은 컴파일된 언어가 컴파일 시 오류를 발생시키는 것과 같은 명백한 오류를 코드에서 확인한다는 것을 의미합니다.

그럴 필요는 없어요, 언제든지 소방서에 들어가서 제거할 수 있어요.json 및 updating functions.uply는 빈 배열입니다.

  "functions": {
    "predeploy": [],
    "source": "functions" 
  }

"린팅"이 무엇입니까?

당신은 간단히 당신의 화력 기지를 만들 수 있습니다.다음과 같은 json 파일:

{
  "functions": {
    "predeploy": [
      "npm --prefix ./functions/ run lint",
      "npm --prefix ./functions/ run build"
    ]
  }
}

제가 하고 있는 일은 $RESOURCE_DIR을 함수 폴더의 하드 코딩 경로로 바꾸는 것입니다. 저에게는 잘 작동합니다.

요약

  1. ESLint를 로컬로 설치하여 package.json에 "devDependencies"를 추가합니다.실행:

     `npm install eslint --save-dev`
    
  2. 위에서 설명한 대로 Windows에 대한 해결 방법입니다.화력 기지를 변경합니다.json:

     `npm --prefix $RESOURCE_DIR run lint` to `npm --prefix %RESOURCE_DIR% run lint`
    
  3. 선택적으로 다음을 패키지에 추가합니다.json:

     "scripts": { "lint": "eslint"} or "scripts": { "lint": "eslint.js"}
    

화재 기지의 위치를 확인합니다.json 파일을 선택한 다음 이 행을 변경합니다.

"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"

로.

"npm --prefix \"%RESOURCE_DIR%\" run lint",
"npm --prefix \"%RESOURCE_DIR%\" run build"

효과가 있을 것입니다

화력 기지에서 수정합니다."의 아들npm --prefix $RESOURCE_DIR run lint"에게npm --prefix %RESOURCE_DIR% run lint"

사이드 노트, 사용 중인 경우yarn(및 아님)npm), 를 지정해야 합니다.--cwd매개변수(대신)--prefix)

firebase.json예:

{
  ...
  "functions": {
    "predeploy": [
      "yarn --cwd \"$RESOURCE_DIR\" lint",
      "yarn --cwd \"$RESOURCE_DIR\" build"
    ]
  },
  ...
}

나의 문제는 노드 버전이었습니다.노드 버전이 잘못된 패키지를 설치한 후 이 오류가 발생했습니다.도망친yarn노드 16으로 설정하지만 내 프로젝트는 노드 14를 사용합니다.배포하기 전에 노드 14로 전환했는데 이 오류가 발생했습니다.저는 여기에 언급된 수정 사항을 시도했고 마침내 제 문제가 무엇인지 깨달았습니다.이것은 정보를 제공하지 않는 오류 중 하나입니다.

이 사람은 해결 방법 없이 문제를 해결해야 합니다.

npm install -g git://github.com/firebase/firebase-tools#master

프로젝트 폴더에서 이 설치를 다시 시도하면 문제가 해결될 것입니다.

클라우드 기능 배포가 성공적으로 작동하고 있습니다.

"functions": {
"predeploy": [
  "npm --prefix \"%RESOURCE_DIR%\" run lint",
  "npm --prefix \"%RESOURCE_DIR%\" run build"
],`enter code here`
"source": "functions"

이전의 어떤 제안도 저에게 효과가 없었습니다.그래서 저는 소방서의 기능 부분을 삭제했습니다.호스팅 부분만 보관하여 아래와 같이 json 파일.그런 다음, 저는 기능 없이 앱을 성공적으로 배포했습니다.

다음 하고 CD를 했습니다.firebase deploy --only

{

  "hosting": {
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

또 다른 문제는 코드에 오류가 있다는 것입니다. 예를 들어 이 오류 메시지가 표시됩니다.

  55:47  error  Expected '!==' and instead saw '!='  eqeqeq
  69:47  error  Expected '!==' and instead saw '!='  eqeqeq

수정하고 다시 배포한 후에 작동합니다.이 첨부된 이미지

저의 방식은이었습니다.. eslintpackage.json.

변경 내용:

 "scripts": {
    "lint": "eslint.",
 }

받는 사람:

"scripts": {
    "lint": "eslint",
}

언급URL : https://stackoverflow.com/questions/48345315/error-deploying-with-firebase-on-npm-prefix-resource-dir-run-lint