程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了MongoDB 部署在 Raspberry Pi 上使用 SSL 在 Nodejs 服务器上超时大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决MongoDB 部署在 Raspberry Pi 上使用 SSL 在 Nodejs 服务器上超时?

开发过程中遇到MongoDB 部署在 Raspberry Pi 上使用 SSL 在 Nodejs 服务器上超时的问题如何解决?下面主要结合日常开发的经验,给出你关于MongoDB 部署在 Raspberry Pi 上使用 SSL 在 Nodejs 服务器上超时的解决方法建议,希望对你解决MongoDB 部署在 Raspberry Pi 上使用 SSL 在 Nodejs 服务器上超时有所启发或帮助;

我最近在树莓派上部署了我的 nodeJs 服务器和 mongoDb,一切正常,但 mongoDB 请求超时。我相信该错误与 ssl 有关,因为当我删除 SSL 时它工作正常。

我在向服务器发出的任何 API 请求中得到的错误是:

{"message":"Operation `users.findOne()` buffering timed out after 10000ms"}

我的 mongodb 连接字符串是:

  "connectionString":"mongodb://username:password@127.0.0.1:27017?authsource=dbWithUserCredentials&compressors=zlib&retryWrites=true&w=majority&ssl=true"

服务器中的连接代码为:

@H_176_7@mongoose.connect(process.env.MONGODB_URI || config.get('connectionString'),{useNewUrlParser: true,useUnifIEdtopology: true,useCreateIndex: truE},(err,clIEnt)=>{
  if (err) return console.error(err);
  console.log('Connected to database');
});

我的 server.Js 是:

require('rootpath')();
const express = require('express');
const app = express();
const cors = require('cors');
const bodyParser = require('body-parser');
var path = require('path');
var exec = require('exec');
const jwt = require('./clover-server-BACkend/_Helpers/jwt');
const errorHandler = require('./clover-server-BACkend/_Helpers/error-handler');

var https = require('https');

var fs = require('fs');

var options = {

  key: fs.readfileSync('./src/assets/ssl_key.txt'),cert: fs.readfileSync('./src/assets/sll.com.crt'),ca: fs.readfileSync ('./src/assets/ssl.com.ca-bundle')

};

app.use(express.static(__dirname + '/dist/softServer',{ dotfiles: 'allow' }));
app.use(bodyParser.Json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb',extended: truE}));
app.use(cors());

// app.get('/*',function(req,res) {
//
//   res.sendfile(path.join(__dirname+'/dist/softServer/index.HTML'));
// });
// use JWT auth to secure the API
app.use('/API/*',jwt());
// API routes
app.use('/API/users',require('./clover-server-BACkend/users/users.controller'));
app.use('/API/categorIEs',require('./clover-server-BACkend/categorIEs/categorIEs.controller'));
app.get('/*',res) {
  res.sendfile(path.join(__dirname+'/dist/softServer/index.HTML'));
});
// global error handler
app.use(errorHandler);
// start server
console.log('In server.Js'); //*MES*
const port = process.env.NODE_ENV === 'production' ? 443 : 4000;
var server = https.createServer(options,app);

server.Listen(port,() => {
  console.log("server starTing on port : " + port)
});

function execCallBACk(err,stdout,stderr){
  if(stdout){
    console.log(stdout)
  }
  if(stderr){
    console.log(stderr)
  }
}

解决方法

确保你的数据库连接代码在你的 server.js 而不是外部文件中 如果它在外部文件中,请确保在 server.js 中调用它,否则它不会连接到数据库

,

你不需要猫鼬连接功能吧?它不在你的 server.js 中。

findOne 命令超时,因为没有活动连接。

findOne 会一直排队,直到您的服务器建立连接,如果没有活动连接,它就会超时。

你需要require这个连接文件,或者在你的server.js中调用mongoose connect

大佬总结

以上是大佬教程为你收集整理的MongoDB 部署在 Raspberry Pi 上使用 SSL 在 Nodejs 服务器上超时全部内容,希望文章能够帮你解决MongoDB 部署在 Raspberry Pi 上使用 SSL 在 Nodejs 服务器上超时所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。