#javascript #node.js #express #blockchain
Вопрос:
мои экспресс-маршруты js выдают мне ошибку 500 внутренняя ошибка сервера, и я попытался ввести переменные в журнал консоли, но ничего не появилось
вот экспресс-маршруты:
submitStar() {
this.app.post("/submitstar", async (req, res) => {
if(req.body.address amp;amp; req.body.message amp;amp; req.body.signature amp;amp; req.body.star) {
const address = req.body.address;
const message = req.body.message;
const signature = req.body.signature;
const star = req.body.star;
try {
let block = await this.blockchain.submitStar(address, message, signature, star);
if(block){
return res.status(200).json(block);
} else {
return res.status(500).send("An error happened!");
}
} catch (error) {
return res.status(500).send(error);
}
} else {
return res.status(500).send("Check the Body Parameter!");
}
});
}
Я продолжаю получать сообщение «Проверьте параметр тела!» в Postman, в то время как сообщение на самом деле правильное
в app.js:
const express = require("express");
const morgan = require("morgan");
const bodyParser = require("body-parser");
/**
* Require the Blockchain class. This allow us to have only one instance of the class.
*/
const BlockChain = require('./src/blockchain.js');
class ApplicationServer {
constructor() {
//Express application object
this.app = express();
//Blockchain class object
this.blockchain = new BlockChain.Blockchain();
//Method that initialized the express framework.
this.initExpress();
//Method that initialized middleware modules
this.initExpressMiddleWare();
//Method that initialized the controllers where you defined the endpoints
this.initControllers();
//Method that run the express application.
this.start();
}
initExpress() {
this.app.set("port", 8000);
}
initExpressMiddleWare() {
this.app.use(morgan("dev"));
this.app.use(bodyParser.urlencoded({extended:true}));
this.app.use(bodyParser.json());
}
initControllers() {
require("./BlockchainController.js")(this.app, this.blockchain);
}
start() {
let self = this;
this.app.listen(this.app.get("port"), () => {
console.log(`Server Listening for port: ${self.app.get("port")}`);
});
}
}
new ApplicationServer();
что может быть не так с сервером?
Комментарии:
1. Содержит ли req.body упомянутые вами ключи? Если это не так, вам, возможно, придется использовать анализатор тела для преобразования в объект json.
2. Я попытался console.log(req.body), но в терминале ничего не появилось
3. Пожалуйста, проверьте app.js файл для пакета анализатора тела
4. Замените переменную маршрутизатора на приведенную выше. Это может быть похоже на const router = express. Маршрутизатор(); Перейдите по этой ссылке github.com/sujithmp/nodejs-auth-system-back-end-1/blob/master/…
Ответ №1:
Внес некоторые изменения в код.
const express = require("express");
const morgan = require("morgan");
const bodyParser = require("body-parser");
/**
* Require the Blockchain class. This allow us to have only one instance of
* the class.
*/
const BlockChain = require('./src/blockchain.js');
class ApplicationServer {
constructor() {
//Express application object
this.app = express();
//Blockchain class object
this.blockchain = new BlockChain.Blockchain();
//Method that initialized the express framework.
this.initExpress();
//Method that initialized middleware modules
this.initExpressMiddleWare();
//Method that initialized the controllers where you defined the endpoints
this.initControllers();
//Method that run the express application.
this.start();
}
initExpress() {
this.app.set("port", 8000);
}
initExpressMiddleWare() {
this.app.use(morgan("dev"));
this.router = express.Router();
this.router.use(bodyParser.urlencoded({extended:true}));
this.router.use(bodyParser.json());
}
initControllers() {
require("./BlockchainController.js")(this.app, this.blockchain);
// console.log(this.app.route(),"this.app")
}
start() {
let self = this;
this.router.post('/',(req,res) => {
console.log(req.body.id,"body");
res.status(200).send('Hello');
})
this.app.use(this.router);
this.app.listen(this.app.get("port"), (req,res) => {
console.log(`Server Listening for port: ${self.app.get("port")}`);
});
}
}
new ApplicationServer();
Комментарии:
1. это дает мне «маршрутизатор», который не определен
2. Перейдите по этой ссылке github.com/sujithmp/nodejs-auth-system-back-end-1/blob/master/…
3. Я реализовал это, и это не помогло, а также есть другие маршруты, которые тоже работали без этого
4. Где проходит ваш маршрут? Вам нужно использовать анализатор тела с маршрутизатором
5. на самом деле я не думаю, что серверу нужен анализатор тела, потому что другие запросы прекрасно работают без него