Ошибка развертывания с помощью firebase на npm --prefix $RESOURCE_DIR run lint

У меня есть новая установка инструментов firebase (после этого учебник), и я пытаюсь загрузить свою первую функцию firebase. Я получаю эту проблему с помощью примера hello-world, который они инициализируют при запуске initbbbbb (только настройка функции CLI во время инициализации)

Если я заменю $RESOURCE_DIR в firebase.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

Ответ 1

Попробуйте заменить $ RESOURCE_DIR на% RESOURCE_DIR% в вашем файле firebase.json.

Ответ 2

вы можете просто сделать свой файл firebase.json следующим образом:

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

то, что я делаю, заменяет $RESOURCE_DIR на жесткую кодировку пути папки функций itis работает хорошо для меня

Ответ 3

Он хочет использовать ваши облачные функции, то есть проверяет ваш код на наличие очевидных ошибок, например, скомпилированный язык будет вызывать ошибки во время компиляции.

Это не обязательно, вы всегда можете удалить его, перейдя в firebase.json и обновив функции .predeploy, чтобы быть пустым массивом.

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

Что такое "Linting" ?

Ответ 4

ПОДТВЕРЖДЕНИЕ

  • Установите ESLint локально, чтобы добавить "devDependencies" в package.json. Run:

     `npm install eslint --save-dev`
    
  • Обходной путь для Windows, как указано выше. Измените firebase.json:

     `npm --prefix $RESOURCE_DIR run lint` to `npm --prefix %RESOURCE_DIR% run lint`
    
  • При необходимости добавьте следующее в package.json:

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

Ответ 5

найдите файл firebase.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"

это будет работать

Ответ 6

Измените в firebase.json значение " npm --prefix $RESOURCE_DIR run lint " на " npm --prefix %RESOURCE_DIR% run lint "

Ответ 7

Этот должен решить проблему без обходного пути

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

пожалуйста, попробуйте эту установку еще раз в вашей папке проекта, это должно решить проблему.

Ответ 8

В папке functions проекта запустите npm install

Ответ 9

Моя облачная функция работает успешно

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