You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Firebase项目部署云函数时提示找不到nodemailer模块

解决Firebase云函数部署时找不到nodemailer模块的问题

问题场景

在React+Firebase项目中创建使用nodemailer发送邮件的云函数,部署时提示找不到nodemailer模块。已执行npm install nodemailer --save,导入方式为import * as nodemailer from 'nodemailer';,但问题依旧。

错误信息

Function failed on loading user code. This is likely due to a bug in the user code. Error message: Provided module can't be loaded.
Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'nodemailer'
Require stack:
- /workspace/lib/index.js
- /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/loader.js
- /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/main.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
    at Module._load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at Object.<anonymous> (/workspace/lib/index.js:6:20)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Module.require (node:internal/modules/cjs/loader:1143:19)

当前配置文件

package.json

{
  "name": "functions",
  "scripts": {
    "build": "tsc",
    "build:watch": "tsc --watch",
    "serve": "npm run build && firebase emulators:start --only functions",
    "shell": "npm run build && firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "18"
  },
  "main": "lib/index.js",
  "dependencies": {
    "firebase-admin": "^11.8.0",
    "firebase-functions": "^4.3.1"
  },
  "devDependencies": {
    "typescript": "^4.9.0",
    "firebase-functions-test": "^3.1.0"
  },
  "private": true
}

firebase.json中的functions配置

"functions": [
    {
      "source": "functions",
      "codebase": "default",
      "ignore": [
        "node_modules",
        ".git",
        "firebase-debug.log",
        "firebase-debug.*.log"
      ],
      "predeploy": [
        "npm --prefix \"$RESOURCE_DIR\" run build"
      ]
    }
  ],

解决方案

  • 确认依赖安装路径:必须在functions子目录下执行npm install nodemailer --save,而非React项目根目录。误在根目录安装会导致云函数的package.json未更新依赖。
  • 检查package.json依赖项:打开functions/package.json,确认dependencies中存在"nodemailer": "^x.x.x"(x.x.x为对应版本号)。若未添加,手动写入后重新执行npm install。
  • 清理重建依赖与代码:
    1. 删除functions/node_modules文件夹和package-lock.json文件
    2. 在functions目录下执行npm install重新安装所有依赖
    3. 执行npm run build重新编译TypeScript代码
    4. 再次执行firebase deploy --only functions
  • 优化部署前置步骤:修改firebase.json的predeploy配置,增加依赖安装步骤,确保部署前自动同步依赖:
    "predeploy": [
      "npm --prefix \"$RESOURCE_DIR\" install",
      "npm --prefix \"$RESOURCE_DIR\" run build"
    ]
    
  • 确认Node.js版本兼容:当前配置指定Node.js 18,nodemailer支持Node.js 16+,版本兼容。若之前用其他版本Node安装依赖,切换到Node.js 18后重新执行依赖安装。

内容的提问来源于stack exchange,提问作者Jerrdust

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:27:33