2

我正在尝试运行自定义 Foxx 应用程序。

目录结构:

  • ~/src/js/foxx
    • 数据库
      • _系统
        • my_app(来自文档)
      • 测试
        • myapp(我的自定义应用程序)
          • 清单.json
          • 应用程序.js

myapp manifest.json

{
  "name": "myapp",
    "version": "0.0.1",
    "author": "ccraig",
    "controllers": {
      "/": "app.js"
    }
}

myapp app.js

(function() {
 "use strict";

 var Foxx = require("org/arangodb/foxx"),
 controller = new Foxx.Controller(applicationContext);


 controller.get("/", function(req, res) {
   res.set("Content-Type", "text/plain");
   res.body = "Hello world";
   });

}());

启动服务器的命令

arangod --javascript.dev-app-path ~/src/js/foxx ~/tmp/arango_db

然后我将浏览器指向:

http://localhost:8529/_db/test/dev/myapp/

并收到此回复:

{"error":true,"code":404,"errorNum":404,"errorMessage":"unknown path 'dev/myapp/index.html'"}

我从 _system (my_app) 下的文档中复制的示例应用程序对我来说很好用。

我也可以运行土豚管理员,这就是我创建“测试”数据库的方式。不过,我确实注意到它在其图标上显示“非活动”,而 _system 显示“活动”,不确定这是否相关。

此外,在管理员中,“myapp”显示在测试数据库的应用程序列表中。

4

1 回答 1

2

404 的原因是默认情况下,对应用程序根目录的调用被重定向到“index.html”。如果“index.html”在应用程序中没有定义路由,则会引发 404。

可以通过将defaultDocument属性添加到 manifest.json 文件来修复它,如下所示:

{
  "name": "myapp",
  "version": "0.0.1",
  "author": "ccraig",
  "controllers": {
    "/": "app.js"
  },
  "defaultDocument" : ""
}

顺便说一句,我在手册中找到了这个:http: //docs.arangodb.org/Foxx/HandlingRequest.html

请注意,即使在更改清单文件之后,您的浏览器也可能已经缓存了重定向,因此它可能会将您路由到 index.html。关闭浏览器或清除其缓存可能会解决此问题。

于 2014-08-30T14:04:37.957 回答