Cloud Functions Firebase CLI 预部署错误(打字稿)

Posted

技术标签:

【中文标题】Cloud Functions Firebase CLI 预部署错误(打字稿)【英文标题】:Cloud Functions Firebase CLI predeploy error (typescript) 【发布时间】:2018-05-25 04:09:14 【问题描述】:

我正在使用打字稿尝试 Cloud Functions。 安装成功后,添加触发器并测试部署。

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 为 typescript 所做的设置有关。 不得不删除添加到“firebase.json”中的“函数”选项。

firebase.json 中删除的选项:

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

【问题讨论】:

[解决方案移至评论][此功能的作者] 这看起来像是我们这边的一个错误。我们会尽快查看。尽管 ”。”和“/”都在 cmd.exe 中工作我怀疑这是因为 cmd.exe 可能需要额外的命令才能使某些东西可执行。需要一个 Windows 虚拟机来测试。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

不知道为什么这被否决了 - 这修复了打字稿找不到正确类型并破坏转译步骤的错误。【参考方案3】:

抱歉耽搁了。安德鲁的回答会起作用,但它使该项目现在只能在 Windows 上运行。更多信息可以查看我的 GitHub 答案here。 TL;DR:

将 package.json 中的脚本更改为:

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

将 firebase.json 中的 predeploy hook 更改为:


  "functions": 
    "predeploy": "npm --prefix functions run lint && npm --prefix functions run build"
  

【讨论】:

【参考方案4】:

只需替换 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 上运行。

【讨论】:

这不是推荐的解决方案,因为这意味着您的定义现在可以在 Windows 上运行,但不能在其他操作系统上运行。请参阅我的其他答案。

以上是关于Cloud Functions Firebase CLI 预部署错误(打字稿)的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中为 Firebase 使用 Cloud Functions

Cloud Functions for Firebase 超时

Firebase Cloud Functions https.onCall 完成状态码:204

Cloud Functions for Firebase onWrite 超时

Easy Firebase Cloud Functions 组织

在 Firebase Cloud Functions 中创建 PDF