云功能Firebase CLI预部署错误(打字稿)

时间:2017-12-11 15:35:13

标签: typescript firebase google-cloud-functions firebase-tools

我正在尝试使用打字稿的云函数 成功安装后,添加了一个触发器并进行了测试部署。

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
操作系统:Windows 10
终端:powershell

///

回滚到Javascript

我使用Javascript选项重新启动了函数,并且在部署时也出现了错误 我想这可能与cli为打字稿做的设置有关 不得不删除添加到“firebase.json”的“函数”选项。

在firebase.json中删除了

选项:

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

4 个答案:

答案 0 :(得分:14)

只需在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"

它可以在Windows上运行。

答案 1 :(得分:6)

抱歉延误。安德鲁的答案可行,但它使该项目现在只适用于Windows。有关详细信息,您可以查看我的GitHub答案here。 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"
  }
}

答案 2 :(得分:4)

将此行添加到functions文件夹中的tsconfig:

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

这是“compilerOptions”块的一部分 为我工作

答案 3 :(得分:0)

请确保在初始化项目并要求您安装依赖项时,选择“是”,我认为我必须手动编写依赖项,以便我通过它,但它会为您完成。当我这样做时,一切正常。我不知道这是否与它有关,但是我还删除了节点模块文件夹,并在同一文件夹中从firebase init重新开始。