Node.js res.send не является функцией (wechat miniprogram) - PullRequest
0 голосов
/ 29 июня 2018

Я пишу API для моего внешнего интерфейса, процесс, внешний интерфейс отправляет строку в бэкэнд, после декодирования бэкэнд отправляет обратно код.

        const router = require('koa-router')({
            prefix: '/weapp'
        });

        router.post("/openid", async (req, res) => {
        const Ut = require("../common/utils");
        try {
            let grant_type = 'authorization_code'
            let appid = config.appId
            let secret = config.appSecret
            let code = req.accept.headers.accept
            console.log('req code: ', code);
            let opts = {
                url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + code + '&grant_type=' + grant_type
            }
            let r1 = await Ut.promiseReq(opts);
            r1 = JSON.parse(r1);
            console.log('r1 is:', r1);
            openid = r1.openid
            res.send(openid)
        }
        catch (e) {
            console.log(e);
            res.json('');
        }
      })

res.send(openid) должен отправить openid, но я получаю {code: -1, error: "res.json is not a function"}. И я не вижу, что определение переменной res перегружено. Помогите мне, пожалуйста ~

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Проблема решена. Код router.post("/openid", async (req, res) => { использует Express Framework, но Wechat использует Koa2 framework, поэтому параметры в async() немного отличаются. В Koa2 мы должны написать router.post("/openid", async (ctx, next) => {. В этом случае ctx.response и ctx.request представляют res и req в express соответственно.

0 голосов
/ 29 июня 2018

Ваш код перехватывается и запускается res.json (''). Попробуйте изменить его на res.json (null) или res.json ({})

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