错误:运行firebase云功能时出现"无法找到模块"

Bad*_*sha 6 javascript node.js firebase nodemailer google-cloud-functions

const functions = require('firebase-functions');
var nodemailer = require('nodemailer');
// const express=require('express');

var transporter=nodemailer.createTransport('smtps://username@gmail.com:password5@smtp.gmail.com');
exports.sendMail=functions.https.onRequest((req,res)=>{
    var mailOptions={
        to: 'receiver@gmail.com',
        subject: 'Test Mail',
        html: 'Testing with Node.js'
    }
    transporter.sendMail(mailOptions,function(err,response){
        if(err){
            res.send('Mail not sent');
        }
        else{
            res.send('Mail sent');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

我从Firebase应用发送邮件.我使用Firebase云功能按照我在使用Firebase网络应用发送电子邮件时询问的问题发送邮件.上面的代码是我的index.js文件.

这是我的package.json文件

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase serve --only functions",
    "shell": "firebase experimental:functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "dependencies": {
    "firebase-admin": "~5.4.2",
    "firebase-functions": "^0.7.1",
    "sendgrid": "^5.2.3"
  },
  "private": true
}
Run Code Online (Sandbox Code Playgroud)

但是在部署代码时我遇到了错误.您是否列出了package.json依赖项中所有必需的模块?这是什么错误.怎么解决? 错误

scn*_*iro 7

nodemailer的依赖关系中缺少了.只需添加它......

npm install nodemailer --save
Run Code Online (Sandbox Code Playgroud)

将导致(x.x.x适当的版本)

"dependencies": {
  "firebase-admin": "~5.4.2",
  "firebase-functions": "^0.7.1",
  "nodemailer": "^x.x.x",
  "sendgrid": "^5.2.3"
}
Run Code Online (Sandbox Code Playgroud)

这很可能适用于您的开发,因为您实际上已nodemailer安装在本地或全局,但它在远程计算机上不存在,因为错误指出

找不到模块'nodemailer'