Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要其他承诺输出的承诺_Javascript_Node.js_Express - Fatal编程技术网

Javascript 需要其他承诺输出的承诺

Javascript 需要其他承诺输出的承诺,javascript,node.js,express,Javascript,Node.js,Express,我正在为一个express API编写一些代码,该API本质上是为了一个身份验证令牌而连接到外部REST服务,然后使用该令牌来做一些事情。我对NodeJS非常陌生,所以我认为我在整个sync/async方面遇到了很多麻烦 现在我的主要问题似乎是我得到了ReferenceError:err没有定义,这似乎与library.js中的行有关,但我预计这里会有很多问题,希望能让我回到正确的轨道上的任何东西都可以 index.js library = require('library.js'); mod

我正在为一个express API编写一些代码,该API本质上是为了一个身份验证令牌而连接到外部REST服务,然后使用该令牌来做一些事情。我对NodeJS非常陌生,所以我认为我在整个sync/async方面遇到了很多麻烦

现在我的主要问题似乎是我得到了
ReferenceError:err没有定义
,这似乎与library.js中的行有关,但我预计这里会有很多问题,希望能让我回到正确的轨道上的任何东西都可以

index.js

library = require('library.js');

module.exports = async (req,res) => {
    // This is a test endpoint for prototyping code and testing calls.
    URI = "/some/uri";
    method = "GET";
    body = "";
    try {
        restResponse = await library.RESTCall(URI,method,body);
        res.send(data);
    } catch (e) {
        return res.status(500).json({ errors: err});
    }
};
library.js

exports.RESTCall = async function(URI,method,body) {
    return new Promise((resolve, reject) => {
        getAuthToken().then((token) => {
            console.log("Token: " + token);
            try {
                // Do stuff with the token to make another call
                resolve(data);
            } catch (e) {
                reject(e);
            }
        }).catch((err) => {
            reject(err);
        });
    });
}

exports.getAuthToken = () => {
    return new Promise((resolve, reject) => {
        try {
            // Do stuff to get an authentication token
            resolve(authToken);
        } catch(e) {
            reject("Failed to get Facets Authentication token. Error: " + e);
        }
    });
}

这看起来只是一个打字错误:

    return res.status(500).json({ errors: e});
供参考:

exports.RESTCall = async function(URI,method,body) {
    return new Promise((resolve, reject) => {
        getAuthToken().then((token) => {
            console.log("Token: " + token);
            try {
                // Do stuff with the token to make another call
                resolve(data);
            } catch (e) {
                reject(e);
            }
        }).catch((err) => {
            reject(err);
        });
    });
}
大致相当,但稍差如下:

exports.RESTCall=函数(URI、方法、正文){ 返回getAuthToken()。然后((令牌)=>{ console.log(“令牌:+Token”); //用代币再打一次电话 返回数据; } } 但由于您有async/await,因此可以进一步简化:

exports.RESTCall=异步函数(URI、方法、正文){ const token=等待getAuthToken(); console.log(“令牌:+Token”); //用代币再打一次电话 返回数据; }
<>你每次看到你自己的代码<代码>新承诺<代码>,我认为你应该花时间去学习承诺是如何工作的。

在索引中.js你有<代码> JSON({错误:Err} /代码),因为你使用<代码> catch(e) <代码>返回RES.STATE(500).JSON({错误:Err})=>
返回res.status(500).json({errors:e})