1

在 Foxx 微服务的入门部分使用 ArangoDB 文档版本 3.3版本 3.4,我无法克服此错误:

Failed to load API definition.

NetworkError when attempting to fetch resource. http://192.168.1.1:8529/_db/_system/_admin/aardvark/foxxes/docs/swagger.json?mount=/getting-started

该错误显示在服务的 API 选项卡上。根据教程安装我的服务后,我得到了服务的卡片。我单击该卡,然后单击 API 选项卡并显示上述错误。

为了消除拼写错误,我尝试从 ArangoDB 文档中复制和粘贴确切的文件内容,并严格按照每一步操作,但我仍然遇到同样的错误。

我新创建的getting-started服务的信息选项卡包含以下信息:

作者:
挂载:/getting-started
模式:开发
版本:未知
版本许可证:未知许可证
路径:/var/lib/arangodb3-apps/_db/_system/getting-started/APP

该示例仅包含两个文件,它们是:

清单.json

{
  "engines": {
    "arangodb": "^3.0.0"
  },
  "main": "index.js"
}

index.js

'use strict';
const createRouter = require('@arangodb/foxx/router');
const router = createRouter();

module.context.use(router);

router.get('/hello-world', function (req, res) {
res.send('Hello World!');
})
.response(['text/plain'], 'A generic greeting.')
.summary('Generic greeting')
.description('Prints a generic greeting.');

预制演示服务(例如 hello-fox 示例)可以正常工作。我收集了更多错误信息:

导航到http://192.168.1.1:8529/getting-started

404:错误消息“未知路径'/getting-started'”

导航到http://192.168.1.1:8529/_db/_system/getting-started

404:错误消息“未知路径'/getting-started'”

控制台还显示:

WARNING File not found "/getting-started": file "" does not exist in "/var/lib/arangodb3-apps/_db/_system/getting-started/APP/files".

本教程没有getting-started为这两个指定文件指明另一个名为的文件或另一个位置。我错过了什么?

4

1 回答 1

0

此问题已根据 @camba1 的有用评论得到解决。Arango 没有问题,只是我对教程的理解有问题。对于处于我这个位置的其他人,以下是我没有正确理解的事情,当解决时,解决了我的问题。

  1. 与教程所说的相反,API 选项卡将给出错误“无法加载 API 定义”,即使对于正常工作的服务也是如此。忽略该错误消息。我还没有使用 API 选项卡。

  2. 本教程引用了两条路径,“/hello-world”和“/getting-started”。这些用于端点(URI)和创建路由器,如下所示:

    router.get('/hello-world', function (req, res) { ...

本教程在这一点上并没有那么清楚,但正如@camba1 指出的那样,服务端点最终会合并这两个元素:

192.168.1.1:8529/_db/_system/getting-started/hello-world .
  1. 在我看来,在没有路径的情况下创建路由器时,这个非常基本的演示会更容易更好:

    router.get(function (req, res) {

在这种情况下,它默认为“/”路径。我认为这可以避免像我这样的初学者感到困惑。然后,服务端点就变得更简单了。就我而言,端点(Arango 在 LAN 上的另一台计算机上运行)变为:

192.168.1.1:8529/_db/_system/getting-started

如果本教程添加了几个额外的句子来解释端点是如何构建的,或者按照我上面的建议进行操作并一步一步简化,那么本教程将会得到改进。

于 2018-12-21T00:50:16.663 回答