Der Fehler "Das erste Argument muss eine Zeichenfolge oder ein Puffer sein" wird angezeigt
// call the packages
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var figlet = require('figlet');
var querystring = require('querystring');
var http = require('http');
var fs = require('fs');
var request = require('request');
// configure app to use bodyParser()
// this will let app get the data from a POST
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.text());
// set port
var port = process.env.PORT || 8082;
// get an instance of the express Router
var router = express.Router();
// middleware to use for all requests
router.use(function(req, res, next) {
// do logging
console.log('UnitGener router invoking');
// go to the next routes and don't stop here
next();
});
// test route to make sure everything is working (accessed at GET http://localhost:8082/api)
router.get('/status', function(req, res) {
res.json({
message: 'UnitGener is ready to work!'
});
});
//noinspection JSUnresolvedFunction
router.route('/function')
.post(function(req, res) {
console.log(req.body);
var formatted = req.body;
request.post({
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
url: 'http://localhost:5000/generate',
body: formatted
}, function(error, response, body) {
console.log(body);
});
});
app.use('/api', router);
app.listen(port);
});
Hier ist mein vollständiger Code zum Erstellen einer POST-Route mit den angegebenen Konfigurationen. Anschließend rufe ich eine andere Post-Route innerhalb der Post-Methode auf. Aber ich bekomme den "neuen TypeError werfen ('erstes Argument muss eine Zeichenfolge oder ein Puffer sein');" dieser Fehler. Ich habe einige Google-Suchvorgänge durchgeführt und auch einige Änderungen vorgenommen. Keiner von ihnen hat funktioniert und es fällt mir immer noch schwer, auf den Fehler hinzuweisen. Ich habe den Body geändert: formatiert in body: formatiert.toString (), aber es hat nicht funktioniert. Bitte geben Sie mir einen Rat, um dies herauszufinden. Es ist eine große Hilfe für mich.
Danke im Voraus
Der Fehler liegt im Anforderungsaufruf. Um das Formular korrekt einzureichen, verwenden Sie
request.post({
url: 'http://localhost:5000/generate',
form: formatted
}, function(error, response, body) {
console.log(body);
});
Ich empfehle Ihnen, das npm-Modul request-versprechen-native zu verwenden: https://github.com/request/request-promise-native https://www.npmjs.com/package/request-promise
var rp = require('request-promise');
var options = {
method: 'POST',
uri: 'http://api.posttestserver.com/post',
body: {
some: 'payload'
},
json: true // Automatically stringifies the body to JSON
};
rp(options)
.then(function (parsedBody) {
// POST succeeded...
})
.catch(function (err) {
// POST failed...
});