部署 Firebase 项目时出现错误:“找不到模块 firebase-functions”。

27

当我尝试部署 Firebase 项目时,npm 控制台显示错误消息“无法找到 firebase-functions 模块”。 我所做的步骤(node 命令)是:

  1. npm install -g firebase-tools
  2. firebase login
  3. firebase init

最终我卡在这里:
4. firebase deploy

请帮帮我。


9
确保您已在“functions”目录中安装了Node模块: cd functions && npm install - Michael Bleigh
1
谢谢。"cd functions" 那么,是否有名为 functions 的文件夹是必需的吗? - Pradeep.T
好的,谢谢。它起作用了。我成功地部署了我的项目。但是现在当我在浏览器中输入从Firebase控制台的托管选项卡获取的项目URL时,它显示“网站未找到”消息。我还需要做什么?请回复。 - Pradeep.T
我也遇到了问题。请看下面的错误信息:无效名称:“@types/jsonwebtoken”。有什么线索吗? - narko
7个回答

13

很简单!如果提示找不到firebase-functions模块,则需要安装它们。

npm install firebase-functions

这不是一个很好的答案,特别是考虑到他很可能在错误的文件夹中。 - Pieter
他从未说过他在错误的文件夹中。他只是不知道命令而已。@Pieter - Prajwal Waingankar
如果他当时知道,他就不会有这个问题了。从他发布的步骤可以推断出他在错误的文件夹中。 请注意,我的评论并不是对你的侮辱,而是为将来的读者提供警示,要确认文件夹。 - Pieter
当然,@Pieter,我不会把它看成是坏事 :) 很高兴你分享了你的意见 :) - Prajwal Waingankar

10

您应该在项目的functions目录中安装node_modules。

cd functions
npm install 

然后运行firebase deploy。


1
我刚从GitHub上的一个安全机器人拉取了一个请求,并没有更新我的函数,所以当我在正确的文件夹中尝试firebase deploy时,这对我起作用了。上面的命令npm install firebase-functions没有起作用,但更改目录确实起作用了。 - Justin

6

可能是您在运行“firebase init”时没有遵循提供的说明。您应该按空格键,然后按回车键选择您想要的选项-可能这就是为什么没有功能文件夹的原因。


1

如果您的 requires 使用了错误的大小写,就可能会出现这种情况!

Firebase 函数文件系统似乎是区分大小写的。

因此,如果您这样做:

const { myStuff } = require('./mystuff');

但实际上文件名为myStuff.js,它在本地可能很好用,但在构建时会失败。


0
我正在使用@nrwl/nx monorepo,并将/functions移到/apps,所有我的node页面都在根项目文件夹中。 对我有效的方法是用单引号替换双引号。
import * as functions from "firebase-functions";

import * as functions from 'firebase-functions';

0

我遇到了同样的问题,一直在想为什么我可以清楚地看到firebase-functions在我的package.json中,并且它肯定已经安装了。

然后我想起来我正在部署(本质上是生产环境),而firebase-functions在我的package.json的devDependencies部分,而不是dependencies部分。

如果有人遇到了同样的问题,请仔细检查firebase-functions是否在dependencies中,否则它将不会包含在结果捆绑包或部署中。在我的情况下,我需要将其明确添加到我的functions/package.json中。

例如 -> 将模块从npm package.json的devDependencies移动到dependencies


0

试试这个

import * as admin from "firebase-admin";

3
尽管您的代码可能提供了问题的答案,请加上一些上下文,以便其他人能够了解它的功能和存在意义。 - Theo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接