Loopback 立即抛出 UrlNotFoundError

Loopback throws UrlNotFoundError out of the box

我一直在按照 Toptal and Developing APIs with Node.js and LoopBack.io 中描述的有关如何使用 Loopback 设置 Node.js 应用程序的说明进行操作。按照这些步骤,当我尝试访问应用程序的 REST API 时收到 UrlNotFoundError。

重现步骤:

  1. 安装了 Strongloop 命令行:$ npm install -g strongloop
  2. 运行 Loopback 的应用程序生成器:$ slc loopback.
  3. 运行项目:$ node .终端显示如下
    Web server listening at: http://0.0.0.0:3000 Browse your REST API at http://0.0.0.0:3000/explorer
  4. 浏览 REST API。
  5. 尝试使用提供的模型 POST 给 /Users。

这导致以下响应:

{
  "error": {
    "statusCode": 404,
    "name": "Error",
    "message": "Cannot POST /api/Users",
    "status": 404,
    "stack": "Error: Cannot POST /api/Users\n    at raiseUrlNotFoundError (/Repos/loopback-test/node_modules/loopback/server/middleware/url-not-found.js:20:17)\n    at Layer.handle [as handle_request] (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/layer.js:95:5)\n    at trim_prefix (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:312:13)\n    at /Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:280:7\n    at Function.process_params (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:330:12)\n    at next (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:271:10)\n    at /loopback-test/node_modules/loopback/node_modules/async/dist/async.js:486:20\n    at replenish (/Repos/loopback-test/node_modules/loopback/node_modules/async/dist/async.js:879:29)\n    at /loopback-test/node_modules/loopback/node_modules/async/dist/async.js:888:13\n    at eachLimit (/Repos/loopback-test/node_modules/loopback/node_modules/async/dist/async.js:3136:26)\n    at Object.<anonymous> (/Repos/loopback-test/node_modules/loopback/node_modules/async/dist/async.js:920:20)\n    at restApiHandler (/Repos/loopback-test/node_modules/loopback/server/middleware/rest.js:63:11)\n    at Layer.handle [as handle_request] (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/layer.js:95:5)\n    at trim_prefix (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:312:13)\n    at /Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:280:7\n    at Function.process_params (/Repos/loopback-test/node_modules/loopback/node_modules/express/lib/router/index.js:330:12)"
  }
}

我尝试过的:

I 运行 Mac OS X,版本 10.11.6。我已经安装了 Node、npm 和其他必要的工具。

我错过了什么,或者我能做些什么来避免收到 raiseUrlNotFoundError,并为我的项目访问 REST API?

我知道这不是一个很好的解决方案,但它确实不错(使用 win 10 64 位)。 我在创建应用程序 slc loopback 并选择环回版本 3.X 时遇到了完全相同的错误,当重新创建应用程序并选择环回版本 2.X 时,api 工作正常,可能就是这样您的项目之间有所不同。

要使其 运行 只需安装 api-explorer

npm install --save loopback-component-explorer --save

并注册路由如下:

在根文件夹的目录结构中有一个名为 "server" 的文件夹。在 "server" 文件夹中创建一个名为 "component-config.json" 的空文件,并将以下代码放入其中:

{
  "loopback-component-explorer": {
    "mountPath": "/explorer"
  }
}

现在您应该可以使用 url http://0.0.0.0:3000/explorer 打开资源管理器页面。

该问题已通过环回 3.x 解决,所以请立即尝试。如果您仍然遇到同样的问题,请按照以下说明操作:

要删除此警告,请禁用内置 REST 处理程序添加的上下文中间件。将server/config.json中的remoting.context属性设置为false;

    {
  "remoting": {
    "context": false,
    // etc.
  },
  // etc.
}

更多信息:http://loopback.io/doc/en/lb2/Using-current-context.html