在DigitalOcean FaaS中无法使用依赖包的问题求助
DigitalOcean FaaS中NodeMailer模块导入失败的解决方法
问题分析
你遇到的两个错误根源分别是:
require语法不被支持:DigitalOcean的FaaS默认采用ES模块(.mjs)运行环境,CommonJS的require()语法在ES模块作用域中无法使用,因此抛出ReferenceError。- 依赖未安装:改用
import后出现ERR_MODULE_NOT_FOUND,核心原因是FaaS环境中没有安装nodemailer包,ES模块无法找到对应的模块文件。
解决步骤
1. 使用正确的ES模块导入语法
nodemailer的ES模块导出结构需要对应正确的导入写法,建议使用:
import * as nodemailer from 'nodemailer';
2. 在FaaS环境中安装nodemailer依赖
针对你使用Web界面的场景,有两种可行方式添加依赖:
- Web界面直接配置:在DigitalOcean函数的设置页面,找到「依赖」或「npm依赖」选项,添加
nodemailer(可指定版本,例如nodemailer@6.9.0),保存后平台会自动安装该依赖。 - 上传包含package.json的代码包:本地创建
package.json文件,在dependencies中声明nodemailer:
{ "dependencies": { "nodemailer": "^6.9.0" } }
将package.json和你的函数代码打包后上传到DigitalOcean,平台会读取配置自动安装依赖。
内容的提问来源于stack exchange,提问作者Donnie
相关产品推荐
相关产品推荐

