Ошибки развертывания Firebase, начиная с ненулевого кода выхода (пробел в пути к проекту)

У меня недавно были проблемы с командой firebase deploy. После команды firebase deploy были развернуты все остальные, кроме firebase (хранилище, база данных и т.д.). Поэтому я решил переустановить firebase, чтобы исправить эту ситуацию, но после переустановки моя проблема стала больше. Теперь ни один из них не развернут со следующей ошибкой:

i deploying database, functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:\Users\faruk\Google Drive\Android\firebase\1\$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 'C:\Users\faruk\Google Drive\Android\firebase\1\$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\faruk\AppData\Roaming\npm-cache\_logs\2018-01-24T18_21_34_878Z-debug.log

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

После небольшого исследования я увидел несколько тем по этому поводу, какие советы изменить

$RESOURCE_DIR to %RESOURCE_DIR%

в системах Windows (я использую Windows 10, кстати). Итак, я отредактировал мой файл firebase.json, который находится на одном верхнем уровне моей папки функций. как это. (Я не знаю, если это правильный файл, который я должен редактировать)

  "database": {
    "rules": "database.rules.json"
  },
  "functions": {
    "predeploy": [
      "npm --prefix %RESOURCE_DIR% run lint"
    ]
  }
}

но после этого редактирования я начал получать другое сообщение об ошибке, подобное этому.

i  deploying database, functions
Running command: npm --prefix %RESOURCE_DIR% run lint

Usage: npm <command>

where <command> is one of:
    access, adduser, bin, bugs, c, cache, completion, config,
    ddp, dedupe, deprecate, dist-tag, docs, doctor, edit,
    explore, get, help, help-search, i, init, install,
    install-test, it, link, list, ln, login, logout, ls,
    outdated, owner, pack, ping, prefix, profile, prune,
    publish, rb, rebuild, repo, restart, root, run, run-script,
    s, se, search, set, shrinkwrap, star, stars, start, stop, t,
    team, test, token, tst, un, uninstall, unpublish, unstar,
    up, update, v, version, view, whoami

npm <command> -h     quick help on <command>
npm -l           display full usage info
npm help <term>  search for help on <term>
npm help npm     involved overview

Specify configs in the ini-formatted file:
    C:\Users\faruk\.npmrc
or on the command line via: npm <command> --key value
Config info can be viewed via: npm help config

[email protected] C:\Program Files\nodejs\node_modules\npm

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

Любой совет приветствуется. Заранее спасибо.

Ответ 1

Ошибка связана с тем, что у вас есть место где-то на пути вашего проекта ( "Google Диск" ):

C:\Users\faruk\Google Drive\Android\firebase\1\$RESOURCE_DIR\package.json

К сожалению, это запутывает командную строку npm, и она принимает это как два аргумента, разделенных этим пространством.

Обычно я ожидаю, что смогу разместить кавычки вокруг всего, чтобы пространство не интерпретировалось таким образом. Поэтому я попробовал это:

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

И это работает для меня.

Я буду следить за командой Firebase внутри этой проблемы, а также за то, что изменения необходимо сделать для Windows.

Ответ 2

На самом деле происходит то, что в Windows firebase.json по умолчанию содержит следующее:

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

Изменить его на:

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

Это сработало для меня, надеюсь, это работает для вас.

Ответ 3

У меня была такая же проблема в Windows. Я скопировал все файлы из папки функций и передал их в папку % RESOURCE_DIR%, а затем запустил развертывание Firebase, и оно успешно развернулось.

Ответ 4

Это то, что у меня работает после изменения $ RESOURCE_DIR на% RESOURCE_DIR% в firebase.json

{
  "functions": {
    "predeploy": [
      "npm --prefix \"%RESOURCE_DIR%\" run lint",
      "npm --prefix \"%RESOURCE_DIR%\" run build"
    ]
  }
}

Ответ 5

Для меня проблема была (я полагаю), потому что firebase не смог найти script.

Не работает:

{
  "hosting": {
    "predeploy": "predeploy.sh",
    ...
}
Running command: predeploy.sh
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: spawn predeploy.sh ENOENT
    at exports._errnoException (util.js:1020:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
    at onErrorNT (internal/child_process.js:367:16)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
    at Module.runMain (module.js:606:11)
    at run (bootstrap_node.js:389:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:504:3

Error: hosting predeploy error: Command terminated with non-zero exit code1

Работа: (обратите внимание на ./)

{
  "hosting": {
    "predeploy": "./predeploy.sh",
    ...
}

Ответ 6

При использовании кода VS откройте папку Firecast (это помогает открыть firebase.json из Resource Directory). В firebase.json измените код файла на этот:

{
  "functions": {
    "predeploy": [
      "npm --prefix \"%RESOURCE_DIR%\" run lint",
      "npm --prefix \"%RESOURCE_DIR%\" run build"
    ]
  }
}

Ответ 7

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

Я наконец удалил это на firebase.json, он снова начал развертываться

Ответ 8

В моем случае я создал функцию для печати журналов, что-то вроде этого:

function log(tag: string, value: any) {
    console.log(tag, JSON.stringify(value));
}

Когда я добавляю async перед ним, он начинает взрываться в сборке :)

Ответ 9

Внутри папки functions проекта запустите npm install. Возможно, вы импортируете один или несколько узловых модулей, которые не установлены, в этом случае вам нужно запустить npm install module_not_installed_yet --save