如何将此 node.js 模块降级至特定版本并防止后续自动升级?

5
我正在使用node.js Nodemailer模块,遇到以下错误;
[错误:不支持的配置,请将Nodemailer降级为v0.7.1或查看迁移指南https://github.com/andris9/Nodemailer#migration-guide] 我查看了我的package.json文件,并意识到它是"nodemailer": "^1.8.0"版本。
我如何降级到v0.7.1并防止在运行npm update时自动升级?

请查看 Node.js 手册页面 - https://docs.npmjs.com/files/package.json#dependencies - Jaromanda X
我认为你想要的是npm shrinkwrap https://docs.npmjs.com/cli/shrinkwrap - Keith M
2个回答

20
如果您需要的是确切版本v0.7.1,则使用"nodemailer":"0.7.1",删除node_modules下的nodemailer,然后再次运行npm install
另一种方法是运行以下命令:
npm remove nodemailer
npm install nodemailer@0.7.1 --save

谢谢。已点赞。如果我运行 npm update,nodemailer 会自动升级吗?如果是,我该如何防止它升级? - guagay_wk
2
不会,因为npm update会遵循package.json中的设置。如果你使用了插入符号或波浪线,则可能会升级包。插入符号用于主版本,波浪线用于次要版本。"^0.7.1"将匹配"1.0.0"以下的任何版本,"~0.7.1"将匹配从"0.7.0"到"0.7.9"之间的任何版本。 - David Xu
所以,请确保它是"nodemailer": "0.7.1"而不是"nodemailer": "^0.7.1"。这正确吗? - guagay_wk
关于 "^1.1.1" 和 "1.1.1" 的区别,请参见此处的答案:(https://dev59.com/j2Eh5IYBdhLWcg3wfzlE#22345808)。 - Kalnode

-1
使用以下命令安装 nodemailer 0.7 版本,否则发送邮件时会出现错误:
npm install nodemailer@0.7.1 --save

var nodemailer = require("nodemailer");

var smtpTransport = nodemailer.createTransport("SMTP",{
   service: "Gmail",
   auth: {
       user: "EMAIL",
       pass: "PASSWORD"
   }
});

var mail = {
    from: "FROM@gmail.com",
    to: "TO@gmail.com",
    subject: "Send Email Using Node.js",
    text: "Node.js New world for me",
    html: "<b>Node.js New world for me</b>"
}

smtpTransport.sendMail(mail, function(error, response){
    if(error){
        console.log(error);
    }else{
        console.log("Message sent: " + response.message);
    }

    smtpTransport.close();
});

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