Асинхронное ожидание застряло навсегда - PullRequest
0 голосов
/ 01 июля 2018

Написание веб-приложения, использующего async / await, но застрявшего там, где строка var r1 = await fetch(url).then((r) => r.text()), кажется, работает вечно. Мой веб-сервер, прослушивающий порт 80, даже не получил запрос.

const fetch = require ('fetch-node')
const express = require('express');
const app = express();

var savedResolve;

app.listen(8079, '127.0.0.1', function() {
    console.log('listening on 8079')
})
app.get('/*', async function (req, res) {
    console.log(req.path)
    res.setHeader('Content-Type', 'text/html');
    await task()
    res.send('Done')
})


async function task() {
    console.log("starting..")
    var url = "http://localhost/prod/te.php";
    var r1 = await fetch(url).then((r) => r.text())
    console.log(r1)
    return "done"
}

Есть идеи? Заранее спасибо!

Update1

Благодаря предложению @deryck, добавьте try и перехватывайте строку вызова fetch, вместо этого получили следующую ошибку

TypeError: Cannot read property 'render' of undefined
    at module.exports (/Users/jsmith/learn/node/node_modules/hooks-node/hooks-node.js:8:11)
    at module.exports (/Users/jsmith/learn/node/node_modules/fetch-node/fetch-node.js:17:1)
    at task (/Users/jsmith/learn/node/te4b.js:22:18)
    at /Users/jsmith/learn/node/te4b.js:13:8
    at Layer.handle [as handle_request] (/Users/jsmith/learn/node/node_modules/express/lib/router/layer.js:95:5)
    at next (/Users/jsmith/learn/node/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/Users/jsmith/learn/node/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/Users/jsmith/learn/node/node_modules/express/lib/router/layer.js:95:5)
    at /Users/jsmith/learn/node/node_modules/express/lib/router/index.js:281:22
    at param (/Users/jsmith/learn/node/node_modules/express/lib/router/index.js:354:14)

1 Ответ

0 голосов
/ 01 июля 2018

node-fetch и fetch-node - две разные библиотеки.

А на основе показанного кода node-fetch - библиотека, которую следует использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...