Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 错误:未准备好进行分析。缺少内容类型?_Node.js_Express - Fatal编程技术网

Node.js 错误:未准备好进行分析。缺少内容类型?

Node.js 错误:未准备好进行分析。缺少内容类型?,node.js,express,Node.js,Express,我正在用curl驱动node.js/express.js应用程序。curl命令: curl-X PUT-i-T LICENSE.txt localhost:9981/v1/test/bucket/some object-s 错误,表示应该存在内容类型。“文本/普通”的内容类型不起作用。事实上,唯一有效的内容类型似乎是:content-type:multipart/formdata;边界=---某物 然而!如果我只放一些文本文件,边界应该是什么?curl命令挂起是因为,我假定,边界无法组成 现在,

我正在用curl驱动node.js/express.js应用程序。curl命令:
curl-X PUT-i-T LICENSE.txt localhost:9981/v1/test/bucket/some object-s

错误,表示应该存在内容类型。“文本/普通”的内容类型不起作用。事实上,唯一有效的内容类型似乎是:
content-type:multipart/formdata;边界=---某物

然而!如果我只放一些文本文件,边界应该是什么?curl命令挂起是因为,我假定,边界无法组成

现在,这个curl命令起作用了:
curl localhost:9981/v1/test/container/some object-X PUT-F“file=@/opt/nedge/README.md”
但这并不是我想要的,因为我不想指定
file=@

最后一个问题是,正在运行的node.js代码。这是busboy的例子,他们github的第一个例子:


我的问题是:如何使用curl指定正确的边界,或者如何使busboy(或node.js streams整体)接受除
多部分/表单数据

之外的内容类型,busboy只处理多部分/表单数据(通常至少有一个字段是文件)或应用程序/x-www-form-urlencoded请求(无文件)。如果您需要处理“文本/普通”或其他类型的请求,那么只需在常规表单处理中间件之前添加您自己的中间件即可。也许是这样的:

// ....

app.use(function(req, res, next) {
  if (!req.headers['content-type'])
    return next(new Error('Bad request'));
  if (req.headers['content-type'].indexOf('text/plain') === 0) {
    // read from `req` here with req.read() or req.on('data', ...), etc.
  } else
    next();
});

// ....

这是否与说“不要使用busboy使用普通旧express请求的流API”相同?如果您希望非表单提交,那么是的,您必须自己处理该请求。