2018年12月31日月曜日

firebase deploy --only functions のエラー (Command terminated with non-zero exit)

2019/08/29追記:現在は修正されているようです。詳細後述。

firebase deploy --only functions 実行時に Error: functions predeploy error: Command terminated with non-zero exit code4294963238 というエラーが発生した際の対処法。

発生したエラー

C:\Users\***>firebase deploy --only functions

=== Deploying to '***'...

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint
npm ERR! path C:\Users\***\%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\***\%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\***\AppData\Roaming\npm-cache\_logs\2018-11-18T04_48_00_356Z-debug.log

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

解決策

firebase.json の中の $RESOURCE_DIR%RESOURCE_DIR% に書き換える。

※Windows用の解決策。異なるOSを使ってチームで作業する場合などは使えない。

参考:
https://stackoverflow.com/questions/48345315/error-deploying-with-firebase-on-npm-prefix-resource-dir-run-lint

Try to replace $RESOURCE_DIR with %RESOURCE_DIR% in your firebase.json file.

成功時のログ

C:\Users\***>firebase deploy --only functions

=== Deploying to '***'...

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

> functions@ lint C:\Users\***\functions
> eslint .

+  functions: Finished running predeploy script.
i  functions: ensuring necessary APIs are enabled...
+  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...

+  Deploy complete!

Project Console: https://console.firebase.google.com/project/***/overview

追記

2019/08/29追記: 久しぶりにFirebase を使ったところ、今は直っている様子。
$RESOURCE_DIR のままでも上手くいきました。

Firebase CLI もWindowsもNode.jsも何もかもアップデートしているので、どれでうまくいくようになったのか分かりませんが…(苦笑)

上手くいった際のFirebase CLI のバージョンは 7.3.0 です。

C:\Users\***>firebase deploy --only functions

=== Deploying to '***'...

i  deploying functions
Running command: npm --prefix "$RESOURCE_DIR" run lint

> functions@ lint C:\Users\***\functions
> eslint .

+  functions: Finished running predeploy script.
i  functions: ensuring necessary APIs are enabled...
+  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (39.41 KB) for uploading
+  functions: functions folder uploaded successfully
i  functions: creating Node.js 8 function myFunction(us-central1)...
+  functions[myFunction(us-central1)]: Successful create operation.
Function URL (myFunction): https://us-central1-***.cloudfunctions.net/myFunction

+  Deploy complete!

Project Console: https://console.firebase.google.com/project/***/overview

0 件のコメント:

コメントを投稿