【发布时间】:2017-04-20 02:50:36
【问题描述】:
我一直在按照Toptal 和Developing APIs with Node.js and LoopBack.io 上描述的如何使用 Loopback 设置 Node.js 应用程序的说明进行操作。按照这些步骤,当我尝试访问应用程序的 REST API 时收到 UrlNotFoundError。
重现步骤:
- 安装了 Strongloop 命令行:
$ npm install -g strongloop - 运行 Loopback 的应用程序生成器:
$ slc loopback。 - 运行项目:
$ node .终端显示如下Web server listening at: http://0.0.0.0:3000 Browse your REST API at http://0.0.0.0:3000/explorer - 浏览 REST API。
- 尝试使用提供的模型 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$1 (/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)"
}
}
我尝试过的:
- 按照 Toptal 帖子中的说明设置并连接到数据库。
- 在设置 Loopback 项目时尝试了 API 项目和示例 Notes 项目(上面的第 2 步)。
- 将该项目与我正在处理的另一个 Loopback 项目进行比较,其中 REST API 工作。不幸的是,我没有足够的经验来发现任何重大差异。
- 实施自定义模型(如 Toptal 帖子和 Youtube 视频中所示)并尝试通过 REST API 访问它。
- 搜索 raiseUrlNotFoundError。最热门的是this issue on GitHub,它提供了指向a SO question 的(死)链接。
- 尝试在与标准 3000 不同的端口上运行项目,以防其他项目出现问题。
- 将常用模型的automigration 设置到数据库。向数据库添加了用户和访问令牌,并尝试在 REST API Explorer 中使用该访问令牌。
我运行 Mac OS X,版本 10.11.6。我已经安装了 Node、npm 和其他必要的工具。
我缺少什么,或者我可以做些什么来避免出现 raiseUrlNotFoundError 并访问我的项目的 REST API?
【问题讨论】:
标签: node.js loopbackjs strongloop