我正在尝试使用打字稿的云函数 成功安装后,添加了一个触发器并进行了测试部署。
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选项重新启动了函数,并且在部署时也出现了错误 我想这可能与cli为打字稿做的设置有关 不得不删除添加到“firebase.json”的“函数”选项。
在firebase.json中删除了选项:
"functions": {
"predeploy": "npm --prefix functions run build"
}
答案 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重新开始。