Behebung von NodeJS request-Fehler: Argument error, options.body
English
Deutsch
Problem:
Du verwendest request, um eine POST-Anfrage mit einem JSON-kodierten Body zu senden, triffst aber auf einen Fehler ähnlich diesem:
request_error_example.txt
Error: Argument error, options.body.
at setContentLength (/home/uli/myproj/node_modules/request/request.js:434:28)
at Request.init (/home/uli/myproj/node_modules/request/request.js:439:5)
at new Request (/home/uli/myproj/node_modules/request/request.js:128:8)
at request (/home/uli/myproj/node_modules/request/index.js:53:10)
at Function.post (/home/uli/myproj/node_modules/request/index.js:61:12)und zusätzlich diesen Stacktrace:
request_typeerror_trace.txt
TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string or Buffer
at write_ (_http_outgoing.js:647:11)
at ClientRequest.write (_http_outgoing.js:622:10)
at Request.write (/home/uli/myproj/node_modules/request/request.js:1501:27)
at end (/home/uli/myproj/node_modules/request/request.js:546:18)
at Immediate.<anonymous> (/home/uli/myproj/node_modules/request/request.js:575:7)
at runCallback (timers.js:763:18)
at tryOnImmediate (timers.js:734:5)
at processImmediate (timers.js:716:5)Lösung
Der Fehler sagt dir im Wesentlichen, dass request die Länge des Bodys nicht bestimmen kann, da du ihm nicht mitgeteilt hast, wie der Body kodiert werden soll, und es kein einfacher String oder Buffer ist. Die Lösung besteht darin, request anzuweisen, JSON-Body-Kodierung zu verwenden, indem du json: true zum Optionsparameter (erstes Argument von request.post) hinzufügst. Ein gültiger Optionsparameter sieht so aus:
request_json_opts.js
const opts = {
url: 'http://localhost:1234/api/myapi',
body: {/* dein Body-Objekt */},
json: true // <-- Diese Zeile hinzufügen
};Check out similar posts by category:
Javascript, NodeJS
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow