Node.js 环回将UrlNotFoundError抛出框外

Node.js 环回将UrlNotFoundError抛出框外,node.js,loopbackjs,strongloop,Node.js,Loopbackjs,Strongloop,我一直遵循关于如何使用环回设置Node.js应用程序的说明,如和中所述。按照这些步骤,当我尝试访问应用程序的RESTAPI时,会出现UrlNotFoundError 复制步骤: 已安装Strongloop命令行:$npm安装-g Strongloop 运行环回的应用程序生成器:$slc Loopback 运行项目:$节点。终端显示以下内容 Web服务器正在侦听:http://0.0.0.0:3000 浏览您的RESTAPIhttp://0.0.0.0:3000/explorer 浏览RESTAP

我一直遵循关于如何使用环回设置Node.js应用程序的说明,如和中所述。按照这些步骤,当我尝试访问应用程序的RESTAPI时,会出现UrlNotFoundError

复制步骤:

  • 已安装Strongloop命令行:
    $npm安装-g Strongloop
  • 运行环回的应用程序生成器:
    $slc Loopback
  • 运行项目:
    $节点。
    终端显示以下内容
    Web服务器正在侦听:http://0.0.0.0:3000
    浏览您的RESTAPIhttp://0.0.0.0:3000/explorer
  • 浏览RESTAPI
  • 尝试使用提供的模型发布到/用户
  • 这将导致以下响应:

    {
      "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)"
      }
    }
    
    {
    “错误”:{
    “状态代码”:404,
    “名称”:“错误”,
    “消息”:“无法发布/api/Users”,
    “状态”:404,
    “堆栈”:“错误:无法在raiseUrlNotFoundError处发布/api/Users\n(/Repos/loopback test/node\u modules/loopback/server/middleware/url not found.js:20:17)\n在Layer.handle处[作为handle\u请求](/Repos/loopback test/node\u modules/loopback/node\u modules/express/lib/router/Layer.js:95:5)\n在trim\u前缀处(/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_参数(/Repos/loopback测试/node_modules/loopback/node_modules/express/lib/router/index.js:330:12)\n下一步)(/Repos/loopback test/node_modules/loopback/node_modules/express/lib/router/index.js:271:10)\n at/loopback test/node_modules/loopback/node_modules/node_modules/loopback/node_modules/async/dist/node_modules/async.js:486:20\n at inful(/Repos/loopback/loopback测试/node_modules/loopback/node\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对象。它提供了指向的(死)链接
    
  • 尝试在不同于标准3000的端口上运行该项目,以防其他项目出现问题
  • 设置数据库的通用模型。向数据库添加了用户和accesstoken,并尝试在REST API资源管理器中使用该accesstoken
  • 我运行MacOSX,版本10.11.6。我安装了Node、npm和其他必要的工具


    我遗漏了什么,或者我可以做些什么来避免出现raiseUrlNotFoundError,并访问我的项目的REST API?

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

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

    npm install --save loopback-component-explorer --save
    
    并将路线登记如下:

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

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

    现在,您应该能够使用url打开资源管理器页面。

    该问题已通过loopback 3.x修复,因此请现在尝试一下。如果仍然存在相同问题,请按照以下说明操作:

    要删除此警告,请禁用内置REST处理程序添加的上下文中间件

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

    有关更多信息:

    啊,没有尝试过!我今晚回家后会尝试。是的,就是这样。使用Loopback 2.x创建应用程序效果很好。正如您所建议的,现有项目也运行版本2.x。谢谢!谢谢。我目前没有做这个项目,也没有访问环境的权限,但很高兴听到应该这样做我现在在3.x工作。