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 超时