当尝试在将用于TypeScript项目的空git存储库上遵循Add Firebase to your JavaScript project时,我在运行firebase deploy
时遇到以下错误:
> functions@ build /Users/mosofsky/Documents/Developer/abcplan/functions
> tsc
src/index.ts:1:1 - error TS6133: 'functions' is declared but its value is never read.
1 import * as functions from 'firebase-functions'; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Found 1 error.
npm ERR! code ELIFECYCLE npm ERR! errno 2 npm ERR! functions@ build: `tsc` npm ERR! Exit status 2 npm ERR! npm ERR! Failed at the functions@ build script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in: npm ERR! /Users/mosofsky/.npm/_logs/2019-09-06T03_00_54_557Z-debug.log
Error: functions predeploy error: Command terminated with non-zero exit code2
由于我一直在遵循Google的入门指南,所以我希望一切正常。
答案 0 :(得分:2)
我发现我可以将有问题的行注释掉,直到编写一些代码为止。
文件位置是来自存储库根目录(不是functions/src/index.ts
)的src/index.ts
。
第一行说
import * as functions from 'firebase-functions';
所以我像这样//
加上了前缀:
// import * as functions from 'firebase-functions';
然后我重新运行firebase deploy
,然后走得更远(我遇到了另一个错误,该错误不相关,但已由Error: HTTP error: 400, Project 'my_project' is not a Firestore enabled project解决了。)
答案 1 :(得分:2)
根本原因是a)声明了一个变量但未使用它,并且b)TypeScript编译器配置为将未使用的变量标记为错误。
在我看来,这种配置在基本设置中是过大的。也许将来对功能设置的编辑将解决此问题。
正如其他人指出的那样,您的选择是您可以使用变量(即,使其成为“未使用”),或仅在tsconfig.json
中更改此行,以便使用未使用的变量不再是“错误”:
$ cat functions/tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"noImplicitReturns": true,
"noUnusedLocals": true, <-- change this to: false
...
答案 2 :(得分:2)
我遇到了同样的问题。我的问题是,在部署之前,我没有将更改保存在文件中(取消了helloWorld测试代码的注释)。保存后,它部署良好。
答案 3 :(得分:0)
错误提示您声明了变量但未使用它。您是否已在教程中进一步进行添加以下内容:
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
然后错误将消失。同样,该错误由TypeScript编译器生成,并且说明适用于JavaScript。如果您使用的是JavaScript,就不可能出现这样的错误。
答案 4 :(得分:0)
您可以评论和部署:
// import * as functions from 'firebase-functions';
或者您可以取消注释以下代码并进行部署:
export const helloWorld = functions.https.onRequest((request, response) => {
response.send("Hello from Firebase!");
});
答案 5 :(得分:0)
1:将索引文件从.js扩展到.txt
2:确保取消注释这两行代码
export const helloWorld = functions.https.onRequest((request,response)=> { response.send(“ Firebase大家好!”); });
3:将扩展返回到.js并部署