异步函数被调用前的行

问题描述 投票:0回答:1

因此,我正在构建一些简单的节点项目,并使用GOT发出一些请求,因为该节点的原始请求库已终止,但这种奇怪的事情不断发生,并在将异步函数作为函数调用之前进行了任何调用。

下面是我正在运行的代码

let express = require("express")
let app = express()
let bodyparser = require("body-parser")
const got = require('got');
app.set("view engine", "ejs")


app.get("/search", function(req, res){
    let query = req.query.pesq
    let url = "https://www.omdbapi.com/?s=" + query + "&apikey=thewdb"
    (async () => {
        try {
            const response = got(url);
            data = JSON.parse(response.body);
            console.log("fine here")
            res.render("search", {data: data})
            //=> '<!doctype html> ...'
        } catch (error) {
            console.log(error.code);
            //=> 'Internal server error ...'
        }
    })
})

app.listen(3000, function(){
    console.log("Server has started!")
})

这是我从中得到的错误

TypeError: "&apikey=thewdb" is not a function
at /workspace/Bootcamp/MoviaApp/index.js:11:2
at Layer.handle [as handle_request] (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/layer.js:95:5)
at next (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/layer.js:95:5)
at /workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/index.js:335:12)
at next (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/index.js:275:10)
at expressInit (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/middleware/init.js:40:5)
at Layer.handle [as handle_request] (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/layer.js:95:5)

我试图找出为什么将异步功能之前的行作为错误所示的功能进行调用。我尝试在console.log("check")之后添加let url,但出现另一个错误:

TypeError: console.log(...) is not a function
at /workspace/Bootcamp/MoviaApp/index.js:12:2
at Layer.handle [as handle_request] (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/layer.js:95:5)
at next (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/layer.js:95:5)
at /workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/index.js:335:12)
at next (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/index.js:275:10)
at expressInit (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/middleware/init.js:40:5)
at Layer.handle [as handle_request] (/workspace/Bootcamp/MoviaApp/node_modules/express/lib/router/layer.js:95:5)

但是我不知道为什么以前有这种奇怪的行为来拨打电话,也许这很简单,但我找不到。抱歉,如果您已经回答了这个问题,但我找不到答案。

node.js express
1个回答
0
投票
您在调用时忘记了调用异步函数而忘记了await

let express = require("express") let app = express() let bodyparser = require("body-parser") const got = require('got'); app.set("view engine", "ejs") app.get("/search", function(req, res){ let query = req.query.pesq let url = "https://www.omdbapi.com/?s=" + query + "&apikey=thewdb" (async () => { try { const response = await got(url); data = JSON.parse(response.body); console.log("fine here") res.render("search", {data: data}) //=> '<!doctype html> ...' } catch (error) { console.log(error.code); //=> 'Internal server error ...' } })() }) app.listen(3000, function(){ console.log("Server has started!") })

© www.soinside.com 2019 - 2024. All rights reserved.