web-dev-qa-db-ja.com

TypeError:未定義の「必要な」プロパティを読み取れません:

私は、Firebaseで関数をデプロイし、その使い方を1日中学習してきました。同じプロジェクトにデプロイする別のディレクトリを初期化し、npmバージョンを更新するまで問題がなく、デプロイしようとするたびに「予期しないエラーが発生しました」というメッセージが表示されるとどうなるかを確認しようとしました

自分のユーザーをnode_modules、bin、およびshareディレクトリの所有者にして、npm権限を更新してみました。 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に何か問題があることを教えてくれますが、何が原因なのかわかりません。前もって感謝します

22
dsenderling

まったく同じ問題があり、npmを6.9.2から6.10.0に更新した直後に開始しました。

6.9.2(npm install -g [email protected])にダウングレードしてしまい、Firebaseのデプロイがすぐに再開されました。

編集:firebaseデプロイはnpm 6.10.1で動作しており、今すぐ更新しても安全です!

35
Rushabh Vora

この問題は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;
}
8
bempa

これはちょうど私にも起こり始めました...

npmがこのコマンドに対して異なる結果を出力しているようです

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

そして、スクリプトcheckFirebaseSDKVersion.jsは次のようなものを期待しています(firebase-functionsが実際に古くなっている場合に取得されます)

{
  "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を変更してください

これを追加して、24行目の{}\nの更新された空の出力を説明します。

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

Npmの更新プロセスがどのように機能するかわからないので、修正されたときに更新するためにこれを元に戻す必要があるかもしれませんが、そうは思いません。

お役に立てば幸いです。

1
aaronvargas

npm i -g firebase-tools @ latest

0
David Bmx

[email protected][email protected]でも同じ問題がありました。

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)

/usr/local/lib/node_modules/firebase-tools/lib/checkFirebaseSDKVersion.js行#37。

var wanted = (output["firebase-functions"] || {}).wanted;
var latest = (output["firebase-functions"] || {}).latest;
0
Danny Thuering