繁体   English   中英

节点 JS:res.send 不是 function

[英]Node JS: res.send is not a function

我正在使用 nodeJS 制作我的第一个简单的反击 api 机器人,但是我遇到了 res.send function 的一些问题。 当我使用它时,它会引发以下错误:“res.send 不是函数”。 我已经尝试将 res.send 移到请求之外,但是只有在我刷新页面后才会更新我的数据。 任何帮助将不胜感激,因为我已经在这个问题上停留了一段时间。

我的代码:

const path = require('path')
const express = require('express')
var request = require("request")

/*const getSkinfo = require('./wyrskin')*/
const app = express()
const publicDirectoryPath = path.join(__dirname, '/public')
var skins_str = "empty"
app.use(express.static(publicDirectoryPath))
/*var string_skin = (JSON.stringify(getSkinfo))*/
app.get('/skin', (req, res) => {

    request('https://api.steamapis.com/market/items/730?api_key=xyz', { json: true }, (err, res, body) => {
        if (err) { return console.log(err); }
        var skins = []
        var score = 0
        var i;
        for (i = 0; i < body.data.length; i++) {
            var name = body.data[i].market_name
            var price = body.data[i].prices
            var img_url = body.data[i].image
            if (name.includes('Factory New') && !name.includes('StatTrak')) {
                skins.push(name + "," + price.avg + "^" + img_url)

            }
        }
        var num1 = Math.floor(Math.random() * 1215);
        var num2 = Math.floor(Math.random() * 1215);
        var out1 = "A : " + skins[num1]
        var out2 = "B : " + skins[num2]

        var mySubString1 = out1.substring(
            out1.lastIndexOf(",") + 1,
            out1.lastIndexOf("^")
        );
        var price1 = parseFloat(mySubString1)

        var mySubString2 = out2.substring(
            out2.lastIndexOf(",") + 1,
            out2.lastIndexOf("^")
        );
        var price2 = parseFloat(mySubString2)

        skins_str = (out1 + " ~ " + out2)
        console.log(skins_str)
        res.send({ skins: skins_str })

    })

})

app.listen(3000, () => {
    console.log('Server is up on port 3000.')



})

谢谢 !

这并不是我真正代理来自节点服务器的请求的方式。 检查节点获取 npm package。 Promise 确实清理了代码。

但是您的代码中的错误是您在此 function 的 scope 中有另一个 res 变量。 如果您将其重命名为响应,它应该可以工作吗?

如果您只是在响应中发送 object,也请使用res.json()

希望这可以帮助!

app.get('/skin', (req, res) => {

    request('https://api.steamapis.com/market/items/730?api_key=xyz', { json: true }, (err, response, body) => {
        if (err) { return console.log(err); }
        var skins = []
        var score = 0
        var i;
        for (i = 0; i < body.data.length; i++) {
            var name = body.data[i].market_name
            var price = body.data[i].prices
            var img_url = body.data[i].image
            if (name.includes('Factory New') && !name.includes('StatTrak')) {
                skins.push(name + "," + price.avg + "^" + img_url)

            }
        }
        var num1 = Math.floor(Math.random() * 1215);
        var num2 = Math.floor(Math.random() * 1215);
        var out1 = "A : " + skins[num1]
        var out2 = "B : " + skins[num2]

        var mySubString1 = out1.substring(
            out1.lastIndexOf(",") + 1,
            out1.lastIndexOf("^")
        );
        var price1 = parseFloat(mySubString1)

        var mySubString2 = out2.substring(
            out2.lastIndexOf(",") + 1,
            out2.lastIndexOf("^")
        );
        var price2 = parseFloat(mySubString2)

        skins_str = (out1 + " ~ " + out2)
        console.log(skins_str)
        res.json({ skins: skins_str })

    })

})

app.listen(3000, () => {
    console.log('Server is up on port 3000.')



})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM