2017-02-11 27 views
8

ここでGAEアプリケーションを初めてデプロイすると、このチュートリアルに従います:https://firebase.googleblog.com/2016/08/sending-notifications-between-android.html(ノードコードのセクションを参照)。Google App Engine - ノード: 'firebase-admin'モジュールを見つけることができません

私は私のマシン上で

npm install firebase-admin --save 
npm install request --save 

を走った、package.jsonはここにあるが、私はgcloud app deployを使用するときに私のブラウザでアプリを開いたとき、私はこれらのログを取得:

2017-02-10 09:35:02 default[20170210t103151] module.js:471 
2017-02-10 09:35:02 default[20170210t103151]  throw err; 
2017-02-10 09:35:02 default[20170210t103151] ^
2017-02-10 09:35:02 default[20170210t103151] 
2017-02-10 09:35:02 default[20170210t103151] Error: Cannot find module 'firebase-admin' 
2017-02-10 09:35:02 default[20170210t103151]  at Function.Module._resolveFilename (module.js:469:15) 
2017-02-10 09:35:02 default[20170210t103151]  at Function.Module._load (module.js:417:25) 
2017-02-10 09:35:02 default[20170210t103151]  at Module.require (module.js:497:17) 
2017-02-10 09:35:02 default[20170210t103151]  at require (internal/module.js:20:19) 
2017-02-10 09:35:02 default[20170210t103151]  at Object.<anonymous> (/app/server.js:1:78) 
2017-02-10 09:35:02 default[20170210t103151]  at Module._compile (module.js:570:32) 
2017-02-10 09:35:02 default[20170210t103151]  at Object.Module._extensions..js (module.js:579:10) 
2017-02-10 09:35:02 default[20170210t103151]  at Module.load (module.js:487:32) 
2017-02-10 09:35:02 default[20170210t103151]  at tryModuleLoad (module.js:446:12) 
2017-02-10 09:35:02 default[20170210t103151]  at Function.Module._load (module.js:438:3) 
2017-02-10 09:35:07 default[20170210t103151] module.js:471 
2017-02-10 09:35:07 default[20170210t103151]  throw err; 
2017-02-10 09:35:07 default[20170210t103151] ^
2017-02-10 09:35:07 default[20170210t103151] 
2017-02-10 09:35:07 default[20170210t103151] Error: Cannot find module 'firebase-admin' 
2017-02-10 09:35:07 default[20170210t103151]  at Function.Module._resolveFilename (module.js:469:15) 
2017-02-10 09:35:07 default[20170210t103151]  at Function.Module._load (module.js:417:25) 
2017-02-10 09:35:07 default[20170210t103151]  at Module.require (module.js:497:17) 
2017-02-10 09:35:07 default[20170210t103151]  at require (internal/module.js:20:19) 
2017-02-10 09:35:07 default[20170210t103151]  at Object.<anonymous> (/app/server.js:1:78) 
2017-02-10 09:35:07 default[20170210t103151]  at Module._compile (module.js:570:32) 
2017-02-10 09:35:07 default[20170210t103151]  at Object.Module._extensions..js (module.js:579:10) 
2017-02-10 09:35:07 default[20170210t103151]  at Module.load (module.js:487:32) 
2017-02-10 09:35:07 default[20170210t103151]  at tryModuleLoad (module.js:446:12) 
2017-02-10 09:35:07 default[20170210t103151]  at Function.Module._load (module.js:438:3) 
2017-02-10 09:43:58 default[20170210t104151] module.js:471 
2017-02-10 09:43:58 default[20170210t104151]  throw err; 
2017-02-10 09:43:58 default[20170210t104151] ^
2017-02-10 09:43:58 default[20170210t104151] 
2017-02-10 09:43:58 default[20170210t104151] Error: Cannot find module 'serviceAccountKey.json' 
2017-02-10 09:43:58 default[20170210t104151]  at Function.Module._resolveFilename (module.js:469:15) 
2017-02-10 09:43:58 default[20170210t104151]  at Function.Module._load (module.js:417:25) 
2017-02-10 09:43:58 default[20170210t104151]  at Module.require (module.js:497:17) 
2017-02-10 09:43:58 default[20170210t104151]  at require (internal/module.js:20:19) 
2017-02-10 09:43:58 default[20170210t104151]  at Object.<anonymous> (/app/server.js:7:22) 
2017-02-10 09:43:58 default[20170210t104151]  at Module._compile (module.js:570:32) 
2017-02-10 09:43:58 default[20170210t104151]  at Object.Module._extensions..js (module.js:579:10) 
2017-02-10 09:43:58 default[20170210t104151]  at Module.load (module.js:487:32) 
2017-02-10 09:43:58 default[20170210t104151]  at tryModuleLoad (module.js:446:12) 
2017-02-10 09:43:58 default[20170210t104151]  at Function.Module._load (module.js:438:3) 
2017-02-10 09:44:10 default[20170210t104151] module.js:471 
2017-02-10 09:44:10 default[20170210t104151]  throw err; 
2017-02-10 09:44:10 default[20170210t104151] ^
2017-02-10 09:44:10 default[20170210t104151] 
2017-02-10 09:44:10 default[20170210t104151] Error: Cannot find module 'serviceAccountKey.json' 
2017-02-10 09:44:10 default[20170210t104151]  at Function.Module._resolveFilename (module.js:469:15) 
2017-02-10 09:44:10 default[20170210t104151]  at Function.Module._load (module.js:417:25) 
2017-02-10 09:44:10 default[20170210t104151]  at Module.require (module.js:497:17) 
2017-02-10 09:44:10 default[20170210t104151]  at require (internal/module.js:20:19) 
2017-02-10 09:44:10 default[20170210t104151]  at Object.<anonymous> (/app/server.js:7:22) 
2017-02-10 09:44:10 default[20170210t104151]  at Module._compile (module.js:570:32) 
2017-02-10 09:44:10 default[20170210t104151]  at Object.Module._extensions..js (module.js:579:10) 
2017-02-10 09:44:10 default[20170210t104151]  at Module.load (module.js:487:32) 
2017-02-10 09:44:10 default[20170210t104151]  at tryModuleLoad (module.js:446:12) 
2017-02-10 09:44:10 default[20170210t104151]  at Function.Module._load (module.js:438:3) 
2017-02-10 16:20:02 default[20170210t124920] Error: Credential implementation provided to initializeApp() via the "credential" property failed to fetch a valid Google OAuth2 access token with the following error: "connect ETIMEDOUT 74.125.202.84:443". 
2017-02-10 16:20:02 default[20170210t124920]  at /app/node_modules/firebase-admin/lib/firebase-app.js:74:23 
2017-02-10 16:20:02 default[20170210t124920]  at process._tickCallback (internal/process/next_tick.js:103:7) 

方法私はこれを修正するのですか?

私はこのように、この手続に回避策を作ることができ
+0

は、同様の問題を抱えて、また「モジュールが見つかりません 『serviceAccountKey.json』を持っている私は、これは持っている感覚を持っています。 – ffritz

+1

このスクリプトはローカルで動作しますか?GAEにデプロイすると失敗するのですか? – bojeil

+0

ローカルでテストする方法がわかりませんノードのエキスパートではありません(まだ) – ypicard

答えて

1

let defaultAppConfig = { 
    credential: admin.credential.cert({ 
     type: "service_account", 
     project_id: "txxxxxxxxxx", 
     private_key_id: "xxxxxxxxxxxxxxxxxxxxxxxxxx", 
     private_key: "-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n", 
     client_email: "[email protected]", 
     client_id: "11111111111111111", 
     auth_uri: "https://accounts.google.com/o/oauth2/auth", 
     token_uri: "https://accounts.google.com/o/oauth2/token", 
     auth_provider_x509_cert_url: "https://www.googleapis.com/oauth2/v1/certs", 
     client_x509_cert_url: "https://www.googleapis.com/robot/v1/metadata/x509/jjjjjj.gserviceaccount.com" 
    }), 
    databaseURL: 'https://projectxxx.firebaseio.com/' 
} 

defaultApp = admin.initializeApp(defaultAppConfig); 
12

は、これらの問題は、どのようrequire()パスの誤解によるものと思われる。 (app.jsコード内部serviceAccountkeyFile.jsonのパラメータを渡します)作業。 require("/Users/username/somepath")のようなものは、アプリケーションのデプロイ時にリモートマシン上に存在せず、インポートが失敗するため、絶対パスは使用できません。 require("serviceAccountKey.json")を使用すると、node_modules/serviceAccountKey.jsonのアプリディレクトリを基準にして表示されます。

serviceAccountKey.jsonをアプリのルートディレクトリからロードする場合は、require("./serviceAccountKey.json")を使用します。それがfooというルートの下のサブディレクトリにある場合は、require("./foo/serviceAccountKey.json")を使用します。これは一般にfirebase-adminのようなモジュールのロードにも適用されます。

NodeJS Modules documentationは、require()メカニズムをより詳細に説明しています。

+0

これは非常にうまく説明された答えです。これは受け入れられた答えでなければなりません。ありがとう。 –

0

私はgcloud app deploy

Error: Cannot find module 'webpack-dev-server' 
at Function.Module._resolveFilename (module.js:469:15) 

を実行している同様の問題を抱えていた私はpackage.jsondependenciesdevDependenciesから(wepack-devのサーバー)指定された依存関係を移動する問題を解決しました。

他の人が同じ問題を抱えている場合は、あなたの依存関係をpackage.jsonに見てみることをお勧めします。 dependenciesは、例えば、唯一の開発にdevDependencies、実行するために必要とされる:ユニットテスト、CoffeeScriptのは、Javascriptのtranspilation、縮小に、

関連する問題