我正在尝试设置一个返回xml的云函数。我能够创建和记录xml,但是当我试图返回它时,它会崩溃,并出现以下错误。
(/var/tmp/worker/node_modules/express/lib/response.js:1119:12) (/var/tmp/worker/node_modules/express/lib/response.js:260:14) at ServerResponse.json (/var/tmp/worker/node_modules/express/lib/response.js:158:21) at cors (/user_code/index )将循环结构转换为Object.stringify (原生)的JSON结构(/user_code/node_modules/cors/lib/index.js:188:7) at /user_code/node_modules/cors/lib/index.js:224:17 at originCallback (/user_code/node_modules/cors/lib/index.js:214:15) at /user_code/node_modules/cors/lib/index.js:219:13 at optionsCallback (/user_code/节点_模块/cors/lib/index.js:199:9)
我的函数
exports.sendXMLResponeSample = functions.https.onRequest((request, response) => {
cors(request, response, () => {
// import xmlbuilder
const builder = require('xmlbuilder');
// create my object to convert to xml
var myFeedObject = {
"somekey": "some value",
"age": 59,
"eye color": "brown"
}
// convert myFeedObject to xml
const feed = builder.create(myFeedObject, { encoding: 'utf-8' })
console.log("feed.end({ pretty: true }) = (below)");
console.log(feed.end({ pretty: true }));
// return xml
return response.send(200, feed) // <<< error occurs here
})
})我相信这个错误意味着firebase云函数期望我在响应中返回一个JSON对象,而不是一个xml对象,但是我不知道如何告诉它在响应中期望一个xml对象。
有人知道如何在防火墙云函数中返回xml对象吗?
编辑:对象被转换为xml,没有任何问题。当尝试返回xml对象时会发生此错误。
发布于 2020-03-04 05:05:28
您可以在云函数返回给调用者的响应对象上使用.contentType(type: string)。
就像这样:
res.status(200)
.contentType('text/xml; charset=utf8')
.send(xmlString);发布于 2018-08-14 21:29:26
您可以安装对象到xml库,然后将响应头中的响应数据类型设置为text/XML,类似于res.header(‘Content’,'text/xml')。
发布于 2018-10-21 18:17:02
这就是我要做的。
const xmlString =
'<?xml version="1.0" encoding="UTF-8"?><Response><Message><Body>This is the
response</Body></Message></Response>';
res
.set("Content-Type", "text/xml; charset=utf8")
.status(200)
.send(xmlString);
为我工作。我确信有一种更好的方法可以将XML转换为字符串。
https://stackoverflow.com/questions/51846874
复制相似问题