web-dev-qa-db-ja.com

Windowsのlint中にCloud Functionsデプロイエラー:「enoent ENOENT:no such file or directory」

firebase関数の入門ガイド に従い、デプロイしようとすると一見単純なエラーが表示されます:

firebase deploy --only functions

i  deploying functions
Running command: npm --prefix $RESOURCE_DIR run lint
npm ERR! path C:\Users\Beat\leginformant\$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\Beat\leginformant\$RESOURCE_DIR\package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent

Package.jsonファイルは、チュートリアルがproject/functions/package.jsonで示しているように存在します。 RESOURCE_DIR envを変更または印刷しようとしましたが、成功しませんでした。 NPMシェル環境内でスコープされると仮定します。

npmバージョン:5.6.0

ノードバージョン:8.9.0

17
Robert Brand

これは、Firebase CLI 3.17.0から3.17.3までの既知の問題ですが、Windowsでのみ発生します。プロジェクトのルートでfirebase.jsonを編集し、そこに表示されるnpmコマンドで$RESOURCE_DIR%RESOURCE_DIR%に置き換えることにより、これをマシンで修正できます。前者は環境変数を使用するUNIX構文の方法であり、後者はWindowsコマンドシェル構文です。 Windowsを使用しているため、Windows構文を使用する必要があります。

チームは、使用している設定ファイルを変更する必要がないようにする方法を検討しています。プラットフォーム間で同じファイルを何度も変更し続けるチームにとってはあまり便利ではないからです。

編集:この問題は、CLIバージョン3.17.5で作成されたプロジェクトで修正する必要があります。

43
Doug Stevenson

これを修正するには、firebase.jsonファイルにアクセスし、RESOURCE_DIRを含むこの行を削除します。

1
Alayo Hussein

走るとき

firebase init functions

この構成を使用します

? What language would you like to use to write Cloud Functions? JavaScript
//TypeScript doesn't work
? Do you want to use ESLint to catch probable bugs and enforce style? Yes
//If you don't you will get a missing file lint
? File functions/package.json already exists. Overwrite? Yes
? Do you want to install dependencies with npm now? Yes
//Why not

その後、Windowsを使用する場合

Firebase.jsonで$ RESOURCE_DIRを%RESOURCE_DIR%に置き換えます

以下を変更します。

npm --prefix \"$RESOURCE_DIR\" run lint

npm --prefix \"%RESOURCE_DIR%\" run lint

メイン構造内のfirebase.jsonファイル内

{
  "functions": {
    "predeploy": [
      "npm --prefix \"%RESOURCE_DIR%\" run lint"
    ],
    "source": "functions"
  }
}
1
parth desai

Windowsでは、firebase init、Infirebase.jsonファイルを使用してCLIでfirebaseプロジェクトを初期化しながら、以下のようにコードを変更します{ "functions": { "predeploy": [ "npm --prefix \"%RESOURCE_DIR%\" run lint" ], "source": "functions" } }この変更後、firebase deploy --only functionsコマンドを試してください。

1
SUMIT MONAPARA

他の提案とは別に、preflight/predeployコマンドを次から変更した場合:

"npm --prefix \"$RESOURCE_DIR\" run lint", OR
"npm --prefix \"%RESOURCE_DIR%\" run lint"

"npm --prefix ./functions run lint"

この問題は修正されたようです。これにより、WindowsとLinuxの両方で解決されます。

詳細については、次の回答(およびスレッド)をご覧ください。 https://github.com/firebase/firebase-tools/issues/610#issuecomment-360147507

0
Rvy Pandey

変更する必要がありますfirebase.jsonここに示すファイル

"npm --prefix functions run lint"
"npm --prefix functions run build"
0
Dinusha Dilanka

Ubuntuの場合は、firebase.jsonフォローするには、注意$RESOURCE_DIR

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

windows 10の場合、firebase.jsonnをフォローするには、注意%前後のRESOURCE_DIR

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

余分なnpm --prefix%RESOURCE_DIR%を実行すると、@ Deji Jamesが言ったようにlintを実行すると、ある程度進歩しましたが、まだ機能しませんでした。

提案として、私はこれを見つけました https://github.com/firebase/firebase-tools/issues/61

@merlinnotがここで言っていますねえ、皆さん、おそらくfirebase.jsonでの事前展開に自信がありますよね?それほど重要ではない場合は、今のところそこにあるものをdeleteだけ。

私のために働いた。 PS。削除を決定する前に、すべての再インストール、アンインストールを完了しました。これだけが機能します。

0
selcuk