【问题标题】:src/index.ts:1:1 - error TS6133: 'functions' is declared but its value is never readsrc/index.ts:1:1 - 错误 TS6133: 'functions' 已声明但其值从未被读取
【发布时间】:2020-01-08 22:24:35
【问题描述】:

尝试在将用于 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 的入门指南,我希望一切正常。

【问题讨论】:

  • 您链接到的文档适用于在网络浏览器中运行的网络项目。 Cloud Functions 在后端运行,不使用 Web 客户端 SDK。运行 Cloud Functions 的后端项目使用 Firebase Admin SDK 来访问 Firebase 和 Google Cloud 产品。
  • @DougStevenson 记录在案的步骤包括firebase init,它询问我想要哪些 Firebase 服务(以及哪种语言)。我选择了列出的所有服务和 TypeScript,因为说明没有说明要选择什么。其中之一肯定是 Cloud Functions。因此它生成了带有错误的functions/src/index.ts
  • Firebase CLI 不会生成与 Web 客户端代码(您链接到的代码)相关的任何内容。 CLI 只处理后端代码。
  • firebase init 确实生成了functions/src/index.ts @DougStevenson
  • 对,这就是后端代码。它不会在 Web 客户端中运行。我假设您想运行 Web 客户端代码,因为您的问题链接到 Web 设置说明。也许您的链接有误?

标签: typescript firebase


【解决方案1】:

运行以下命令,它会解决你的问题。

npm install -g firebase-tools

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。我的问题是在部署之前我没有保存文件中的更改(取消注释 helloWorld 测试代码)。保存后,部署正常。

    【讨论】:

    • 这解决了我的问题:)
    【解决方案3】:

    根本原因是 a) 一个变量已声明但未使用,b) TypeScript 编译器配置为将未使用的变量标记为错误。

    在我看来,这种配置在基本设置中是多余的。也许未来对函数设置的编辑会解决这个问题。

    正如其他人指出的那样,您的选择是您可以使用该变量(即使其“未使用”),或者简单地更改tsconfig.json 中的这一行,这样未使用的变量就不会不再是“错误”:

    $ cat functions/tsconfig.json
    {
      "compilerOptions": {
        "module": "commonjs",
        "noImplicitReturns": true,
        "noUnusedLocals": true,    <-- change this to: false
        ...
    

    【讨论】:

      【解决方案4】:

      您可以评论和部署:

      // import * as functions from 'firebase-functions'; 
      

      或者您可以取消注释以下代码并部署:

       export const helloWorld = functions.https.onRequest((request, response) => {
       response.send("Hello from Firebase!");
       });
      

      【讨论】:

        【解决方案5】:

        错误是抱怨您声明了一个变量但没有使用它。如果您在教程中进一步添加这一行:

        // Initialize Firebase
        firebase.initializeApp(firebaseConfig);
        

        那么错误就会消失。此外,该错误是由 TypeScript 编译器生成的,并且说明适用于 JavaScript。如果您使用 JavaScript,就不可能出现这样的错误。

        【讨论】:

        • 但这在本教程的第 5.2 步中。早些时候,在步骤 4.4 中,它要求运行 firebase deploy,由于我在 firebase init 中所做的选择而出错。教程没有指定在 firebase init 中选择哪些选项,所以我选择了 TypeScript 和所有 Firebase 服务。
        【解决方案6】:

        我发现我可以在编写一些代码之前将有问题的行注释掉。

        文件位置是存储库根目录中的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解决)。

        【讨论】:

          猜你喜欢
          • 2019-08-24
          • 1970-01-01
          • 2022-08-10
          • 2018-09-28
          • 1970-01-01
          • 2021-05-28
          • 1970-01-01
          • 2018-10-05
          • 1970-01-01
          相关资源
          最近更新 更多