web-dev-qa-db-ja.com

Cloud Functions Firebase CLIプレデプロイエラー(TypeScript)

TypeScriptでクラウド関数を試しています。
正常にインストールされた後、トリガーを追加し、デプロイをテストしました。

index.ts

import * as functions from 'firebase-functions';

export const createAccount = functions.auth.user().onCreate(event => {
    const user = event.data;
    console.log('user displayname', user.displayName);
    return;
});

コマンド

firebase deploy --only functions

=== Deploying to 'project'...

i  deploying functions
i  functions: running predeploy script.

> functions@ build D:\vmbox\project\firebase\functions
> tslint -p tslint.json && ./node_modules/.bin/tsc

[〜#〜]エラー[〜#〜]

'.' is not recognized as an internal or external command,
operable program or batch file.

環境
firebase cli v3.16.0
ノードv6.11.2
npm v4.2.0
OS:Windows 10
ターミナル:powershell

///

Javascriptへのロールバック

Javascriptオプションを使用して関数を再起動しましたが、デプロイ時にエラーが発生しました。
TypeScriptのCLIによって行われたセットアップに関連している可能性があります。
「firebase.json」に追加された「functions」オプションを削除する必要がありました。

firebase.jsonでオプションが削除されました:

  "functions": {
    "predeploy": "npm --prefix functions run build"
  }
8
guillefd

package.json内で置き換えるだけです

"build": "./node_modules/.bin/tslint.cmd -p tslint.json && ./node_modules/.bin/tsc.cmd"

これについて

"build": ".\\node_modules\\.bin\\tslint.cmd -p tslint.json && .\\node_modules\\.bin\\tsc.cmd"

そしてそれはウィンドウズで動作します。

18
Andrew Veresov

関数フォルダー内のtsconfigに次の行を追加します。

"typeRoots": [
  "node_modules/@types"
],

これは私のために働いた「compilerOptions」ブロックの一部です

8
Kisinga

遅れて申し訳ありません。 Andrewの答えは機能しますが、プロジェクトはWindowsでのみ機能するようになりました。詳細については、私のGitHubの回答を確認できます ここ 。 TL; DR:

Package.jsonのスクリプトを次のように変更します。

  "scripts": {
    "lint": "./node_modules/.bin/tslint -p tslint.json",
    "build": "./node_modules/.bin/tsc"
  }

Firebase.jsonのpredeployフックを次のように変更します。

{
  "functions": {
    "predeploy": "npm --prefix functions run lint && npm --prefix functions run build"
  }
}
6
Thomas Bouldin