无法导出连接

时间:2019-09-04 14:26:53

标签: node.js json

我正在创建一种可以在Salesforce平台上完成工作的技能。我正在使用Jsforce库来做到这一点。

是这种情况。

我有2个文件

  1. index.js
  2. restServices.js

我想将其余的端点操作分离到第二个文件中,在处理完请求后仅保留响应的索引。我没有进行帐户关联,并且工作正常。我使用下面的代码建立连接(在Alexa应用上进行oAuth身份验证),如here所述。这是我的代码。

function onLaunch(launchRequest, session, response) {
    if (!session.user.accessToken) {
        response.speechText = "Hi there, to experience the best of our service, request you to link your account. please click on, Link Account in your alexa app";
        response.isAccountLinking = "true";
        response.shouldEndSession = true;
        response.done();
    } else {
        var conn = new jsforce.Connection({
            instanceUrl: process.env.INSTANCE_URL,
            accessToken: session.user.accessToken
        });
        conn.identity(function (err, res) {
            session.attributes.loggedInUser = res;
            if (err) { return console.error(err); }
            console.log("user ID: " + res.user_id);
            console.log("organization ID: " + res.organization_id);
            console.log("username: " + res.username);
            console.log("display name: " + res.display_name);
            response.speechText = `Hi ${res.display_name}, How can I help you today?`;
            response.repromptText = 'How can I help you today?';
            response.shouldEndSession = false;
            response.done();
        });
    }
}

这工作正常,并给出了预期的准确结果。现在,我想使用这个已建立的会话变量并将其传递给我的restServices文件,这样,我就不会最终进行不必要的调用。

我的操作方式是在conn.identity块之前,我将会话变量设置为

session.attributes.conn = conn;

我收到错误消息

  

{“ errorType”:“错误”,“ errorMessage”:“无法进行字符串化   响应正文”,“堆栈”:[[错误:无法分类   响应正文“,”在_trySerializeResponse   (/var/runtime/RAPIDClient.js:166:11)“,”位于   RAPIDClient._post(/var/runtime/RAPIDClient.js:127:22)“,”
  在RAPIDClient.postInvocationResponse   (/var/runtime/RAPIDClient.js:39:10)“,”完成   (/var/runtime/CallbackContext.js:34:12)“,”完成时   (/var/runtime/CallbackContext.js:59:7)“,”成功   (/var/runtime/CallbackContext.js:63:5)“,”位于Object.succeed   (/var/runtime/CallbackContext.js:105:16)“,”在   Response.done(/var/task/index.js:79:23)“,”位于   /var/task/index.js:200:22“,”位于   /var/task/node_modules/jsforce/lib/promise.js:72:9“]}

对字符串化有一些疑问,并将此行更改为

session.attributes.conn = JSON.stringify(conn);

现在,出现以下错误。

  

{“ errorType”:“ TypeError”,“ errorMessage”:“转换循环   结构为JSON”,“堆栈”:[“ TypeError:正在转换   JSON的圆形结构“,”在JSON.stringify   ()“,”位于/var/task/index.js:198:44“,”
  在/var/task/node_modules/jsforce/lib/promise.js:72:9“,”在   process._tickCallback(internal / process / next_tick.js:61:11)“]

这非常令人困惑,无法理解我要去哪里。请让我知道如何修复它。

我也想知道如何将该conn发送到我的restServices文件中

谢谢

0 个答案:

没有答案