【问题标题】:wit.ai quickstart.js error from node, unexpected token{来自节点的 wit.ai quickstart.js 错误,意外令牌{
【发布时间】:2016-12-05 22:57:24
【问题描述】:

我正在通过 wit.ai quickstart tutorial 并从节点(版本 4.5.0 LTS)收到错误,但我在代码中没有看到错误,而且它是直接从下载的示例代码机智:

examples\quickstart.js:39
const {sessionId, context, entities} = request;
SyntaxError: Unexpected token {
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:373:25)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    at startup (node.js:139:18)
    at node.js:974:3

另外,从 git 下载的代码与教程页面上显示的代码不同:

来自 git clone 的代码,example/quickstart.js 是这样的:

'use strict';

let Wit = null;
let interactive = null;
try {
  // if running from repo
  Wit = require('../').Wit;
  interactive = require('../').interactive;
} catch (e) {
  Wit = require('node-wit').Wit;
  interactive = require('node-wit').interactive;
}

const accessToken = (() => {
  if (process.argv.length !== 3) {
    console.log('usage: node examples/quickstart.js <wit-access-token>');
    process.exit(1);
  }
  return process.argv[2];
})();

// Quickstart example
// See https://wit.ai/ar7hur/quickstart

const firstEntityValue = (entities, entity) => {
  const val = entities && entities[entity] &&
    Array.isArray(entities[entity]) &&
    entities[entity].length > 0 &&
    entities[entity][0].value
  ;
  if (!val) {
    return null;
  }
  return typeof val === 'object' ? val.value : val;
};

const actions = {
  send(request, response) {
    const {sessionId, context, entities} = request;
    const {text, quickreplies} = response;
    console.log('sending...', JSON.stringify(response));
  },
  getForecast({context, entities}) {
    var location = firstEntityValue(entities, 'location');
    if (location) {
      context.forecast = 'sunny in ' + location; // we should call a weather API here
      delete context.missingLocation;
    } else {
      context.missingLocation = true;
      delete context.forecast;
    }
    return context;
  },
};

const client = new Wit({accessToken, actions});
interactive(client);

但是教程说 const 动作部分应该是这样的:

const actions = {
  send(request, response) {
    const {sessionId, context, entities} = request;
    const {text, quickreplies} = response;
    return new Promise(function(resolve, reject) {
      console.log('sending...', JSON.stringify(response));
      return resolve();
    });
  },
  getForecast({context, entities}) {
    return new Promise(function(resolve, reject) {
      // Here should go the api call, e.g.:
      // context.forecast = apiCall(context.loc)
      context.forecast = 'sunny';
      return resolve(context);
    });
  },
};

不管怎样,两个版本都给出相同的错误。

【问题讨论】:

    标签: wit.ai


    【解决方案1】:

    事实证明,由于代码中的某些 ECMAScript 6 功能,如果您的节点版本

    node --harmony_destructuring examples/quickstart.js 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2017-10-06
      • 2021-07-06
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 2017-08-21
      相关资源
      最近更新 更多