Javascript Request.query未定义
我正在尝试从以下url获取ean: NodeJS服务器处理请求的方式如下:Javascript Request.query未定义,javascript,node.js,http,Javascript,Node.js,Http,我正在尝试从以下url获取ean: NodeJS服务器处理请求的方式如下: const http = require('http') const port = 3000 const requestHandler = async (request, response) => { let bar_code = request.query.ean bar_code = "7038010034985" let product = await Promise.race(
const http = require('http')
const port = 3000
const requestHandler = async (request, response) => {
let bar_code = request.query.ean
bar_code = "7038010034985"
let product = await Promise.race([
get_info_meny_joker(bar_code, "meny.no"),
get_info_meny_joker(bar_code, "joker.no"),
get_info_openfoodfacts(bar_code)
])
// WRITE TO DATABASE
// database.ref('test/' + bar_code).set(product);
response.setHeader('Content-Type', 'application/json');
response.end(JSON.stringify(product))
}
const server = http.createServer(requestHandler)
server.listen(port, (err) => {
if (err) {
return console.log('Error occurred', err)
}
console.log(`Server is listening on ${port}`)
})
当应用程序达到“let bar_code=request.query.ean”时,应用程序就会崩溃(request.query.ean未定义)。我在谷歌上搜索了一下,我只是看不出我所做的与我找到的例子有什么不同。在我之前发送请求时,它工作得很好。有什么想法吗
下面是完整的错误消息(由于要在此处发布的代码被大量剪切,所以行和字符位置可能已关闭)
0 | index | TypeError:无法读取未定义的属性“ean”
0 | index |位于Server.requestHandler(/home/ubuntu/kalori_app/Server/index.js:32:34)
0 |索引|在emitTwo(events.js:126:13)
Server.emit上的0 | index |(events.js:214:7)
服务器上的0 |索引|。(/usr/local/lib/node_modules/pm2/node_modules/@pm2/io/build/main/metrics/httpMetrics.js:166:33)
parserOnIncoming上的0 |索引|(_http_server.js:619:12)
0 | index |位于HTTPParser.parserOnHeadersComplete(_http_common.js:115:23)
您可以使用Node.jsurl
API,它将为您解析所有内容:
consthttp=require('http'),
url=require('url');//导入库
常数端口=3000
const requestHandler=async(请求、响应)=>{
让bar_code=url.parse(request.url,true).query.ean;//然后使用它
让产品=等待承诺([
获取信息(条形码,“meny.no”),
获取joker的信息(条形码,“joker.no”),
获取\u信息\u openfoodfacts(条形码)
])
//写入数据库
//database.ref('test/'+条形码).set(产品);
setHeader('Content-Type','application/json');
response.end(JSON.stringify(产品))
}
const server=http.createServer(requestHandler)
服务器侦听(端口,(错误)=>{
如果(错误){
返回console.log('发生错误',err)
}
log(`Server正在侦听${port}`)
})
阅读有关url
API的更多信息:
请参阅本文档“获取ean”什么是“ean”@Geuis只是URL中参数的随机名称。它指的是条形码,通常出现在商店的产品上。
http
中的request
不会有解析的查询对象(如express(或其他中间件)生成和提供)。你必须这样做或使用middleware@PatrickEvans嗯,我想我之前用过Express。哦,那么,我想我会添加另一个库来解析url。
0|index | TypeError: Cannot read property 'ean' of undefined
0|index | at Server.requestHandler (/home/ubuntu/kalori_app/server/index.js:32:34)
0|index | at emitTwo (events.js:126:13)
0|index | at Server.emit (events.js:214:7)
0|index | at Server.<anonymous> (/usr/local/lib/node_modules/pm2/node_modules/@pm2/io/build/main/metrics/httpMetrics.js:166:33)
0|index | at parserOnIncoming (_http_server.js:619:12)
0|index | at HTTPParser.parserOnHeadersComplete (_http_common.js:115:23)