ApiAiApp 不是构造函数

ApiAiApp is not a constructor

我正在使用 api.ai 在 node.js 客户端库下面进行测试,我从本页给出的示例中复制了准确​​的代码。

https://developers.google.com/actions/reference/nodejs/ApiAiApp

但每次我得到

TypeError: ApiAiApp is not a constructor
 at /app/index.js:9:15
 at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)

这是我的 index.js 文件:

var express = require('express');
var request = require('request');
var exps = express();

const ApiAiApp = require('actions-on-google').ApiAiApp;

exps.post('/hook', function(request, response) {

  const app = new ApiAiApp({request, response});

  response.status(200)
  response.json({
      speech: "Hello from hook",
      displayText: "Hello from hook",
      source: 'HOOK'
  })
  console.log("RESPONSE :::: \n");
  console.log(response);
});

exps.listen((process.env.PORT || 8000), function() {
    console.log("App up and running, listening.")
})

Package.json

{
  "name": "googleActionNode",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "Sukhvinder Singh",
  "dependencies": {
    "actions-on-google": "1.2.0",
    "body-parser": "^1.15.0",
    "express": "^4.13.4"
  },
  "devDependencies": {},
  "repository": {
    "type": "git",
    "url": "git+https://github.com/sukhvinder1/googleActionNode.git"
  },
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/sukhvinder1/googleActionNode/issues"
  },
  "homepage": "https://github.com/sukhvinder1/googleActionNode#readme"
}

如果我在下面的代码中输入,一切正常。

  const app = new ApiAiApp({request: request, response: response});

有人可以帮我吗?

那个文件中有很多东西让我感到困惑,我想知道它是否也让我感到困惑node.js。

  • 您不需要为 ActionsSdkAppApiAiApp 创建定义。我会尝试删除 ActionsSdkApp,看看是否可行。

  • 您不需要调用 status()json()(对于我认为此版本文件中不存在的 res 对象).

  • 行号不匹配,但我假设还有其他因素可能会混淆问题。

您收到此错误是因为您调用的方法不是您最初使用的版本的 actions-on-google 的一部分。

在 1.0 版本中,您可以这样称呼它:

 const Assistant = require('actions-on-google').ApiAiAssistant;

后来的版本改为

 const Assistant = require('actions-on-google').ApiAiApp;

更高版本仍然允许使用早期名称,但它已被弃用,您应该切换到新名称和最新的库版本。

顺便说一句,你可能想看看我写的这个例子:https://github.com/greenido/bitcoin-info-action/blob/master/index.js 它显示了我们希望使用 actions-on-google 的方式(例如,使用 Map 将动作连接到意图)。

希望对您有所帮助。