Next.js中Nodemailer无法运行:提示Module not found: Can't resolve 'stream'
解决Next.js中Nodemailer的
Module not found: Can't resolve 'stream'错误 错误原因
Nodemailer依赖Node.js核心模块stream,但Next.js在打包浏览器端代码时无法识别这个仅存在于Node.js环境的模块,从而触发报错。
解决步骤
安装浏览器兼容的
stream实现包:npm install stream-browserify # 或使用yarn yarn add stream-browserify修改项目根目录下的
next.config.js,添加webpack配置以替换模块:/** @type {import('next').NextConfig} */ const nextConfig = { webpack: (config) => { config.resolve.fallback = { ...config.resolve.fallback, stream: require.resolve('stream-browserify'), }; return config; }, }; module.exports = nextConfig;检查代码位置:确保Nodemailer仅在服务器端代码中使用,比如API Route(如你的
app/api/contact/route.js)或带有'use server'指令的Server Component里,不要在客户端组件中导入Nodemailer。重启Next.js开发服务器:修改配置后必须重启服务才能生效。
内容的提问来源于stack exchange,提问作者Vedant Raut
相关产品推荐
相关产品推荐

