TypeError: Невозможно прочитать свойство 'wanted' из undefined: - программирование

TypeError: Невозможно прочитать свойство 'wanted' из undefined:

Я успешно развертывал функции с помощью firebase весь день, учась им пользоваться. Я пытался увидеть, что произошло, если я инициализировал другой каталог, который развертывается в том же проекте, и у меня не было проблем, пока я не обновил свою версию npm, и теперь я получаю сообщение "Неожиданная ошибка произошла" всякий раз, когда я пытаюсь развернуть

Я попытался обновить разрешение npm, сделав моего собственного пользователя владельцем каталогов node_modules, bin и share. Я попытался удалить и переустановить firebase-tools. Я также попытался удалить все мои текущие каталоги функций и инициализировать новый каталог и заново установить мои зависимости там.

Вот журнал отладки

Dylans-MacBook-Pro-3:functions dsenderling$ firebase deploy --debug
[2019-07-03T18:04:35.526Z] ----------------------------------------------------------------------
[2019-07-03T18:04:35.528Z] Command:       /usr/local/bin/node /usr/local/bin/firebase deploy --debug
[2019-07-03T18:04:35.529Z] CLI Version:   7.0.2
[2019-07-03T18:04:35.529Z] Platform:      darwin
[2019-07-03T18:04:35.529Z] Node Version:  v10.16.0
[2019-07-03T18:04:35.529Z] Time:          Wed Jul 03 2019 13:04:35 GMT-0500 (Central Daylight Time)
[2019-07-03T18:04:35.529Z] ----------------------------------------------------------------------

[2019-07-03T18:04:35.537Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2019-07-03T18:04:35.537Z] > authorizing via signed-in user
[2019-07-03T18:04:35.537Z] [iam] checking project my-awesome-project-5a4e9 for permissions ["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get"]
[2019-07-03T18:04:35.539Z] >>> HTTP REQUEST POST https://cloudresourcemanager.googleapis.com/v1/projects/my-awesome-project-5a4e9:testIamPermissions  
 permissions=[cloudfunctions.functions.create, cloudfunctions.functions.delete, cloudfunctions.functions.get, cloudfunctions.functions.list, cloudfunctions.functions.update, cloudfunctions.operations.get, firebase.projects.get]
[2019-07-03T18:04:35.769Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Wed, 03 Jul 2019 18:04:35 GMT, server=ESF, cache-control=private, x-xss-protection=0, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, server-timing=gfet4t7; dur=83, alt-svc=quic=":443"; ma=2592000; v="46,43,39", accept-ranges=none, transfer-encoding=chunked
[2019-07-03T18:04:37.033Z] TypeError: Cannot read property 'wanted' of undefined
    at /usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js:37:51
    at process._tickCallback (internal/process/next_tick.js:68:7)

Error: An unexpected error has occurred.

Моя интуиция говорит мне, что что-то не так с firebase-tools или моим firebase sdk, но я не могу понять, что именно. заранее спасибо

4b9b3361

Ответ 1

Возникла точно такая же проблема, началась сразу после обновления npm с 6.9.2 до 6.10.0.

Закончилось понижение до 6.9.2 (npm install -g [email protected]), и мои установки Firebase снова начали работать сразу же.

Изменение: Firebase развертывания работают с npm 6.10.1, безопасное для обновления сейчас!

Ответ 2

Я думаю, что эта проблема вызвана исправлением в npm 6.10.0, см. Https://github.com/npm/cli/pull/176.

Обходной путь должен изменить /usr/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js (linux). Для macOS и nvm, смотрите комментарии ниже.

от:

if (!output) {
  return;
}

чтобы:

if (!output || !output["firebase-functions"]) {
  return;
}

Ответ 3

Это только начало происходить со мной также...

Похоже, либо npm выводит другой результат для этой команды

npm outdated firebase-functions --json=true
// for me outputs  {}\n

А скрипт checkFirebaseSDKVersion.js ожидает что-то вроде этого (что он получит, если ваши функции checkFirebaseSDKVersion.js действительно устарели)

{
  "current": "2.5.0",
  "wanted": "2.5.0",
  "latest": "3.0.2",
  "location": "node_modules/some path /firebase-functions"
}

ИЛИ пустой вывод... скорее всего в вашем случае

Что вы можете сделать, чтобы исправить это

Это, вероятно, будет исправлено довольно скоро, поскольку это начнет влиять на большее количество людей... сейчас измените /usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js

добавьте это, чтобы учесть обновленный пустой вывод {}\n в строке 24

            if (data && data.toString() !== "{}\n") {
                output = JSON.parse(data.toString("utf8")); // existing Code!
            }

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

Надеюсь, это поможет!

Ответ 4

sudo npm я -g [email protected] для пользователей linux как временное исправление.