首页 > 解决方案 > 获取错误响应,状态为:404 Not Found for URL

问题描述

我在运行我试图与 Neo4j 应用程序集成的 angular 和 nodejs 应用程序时遇到问题。问题是我得到的错误-

POST http://localhost:7474/viewNodesStart 404 (Not Found)

EXCEPTION: Response with status: 404 Not Found for URL: 
http://localhost:7474/viewNodesStart

尽管此主题在 StackOverflow 中重复,但我仍然发布它,因为以下链接建议不适合我的问题。

URL 找不到 Angular2 404:http://localhost/WebApi2/api/hero

例外:状态响应:404 Not Found for URL / Angular2

https://github.com/johnpapa/angular-tour-of-heroes/issues/94

请检查我的代码

app.component.ts

import { Component, OnInit } from '@angular/core';
import { Injectable } from '@angular/core';

import { ToasterService } from '../toaster.service';

import { FormGroup, FormControl, FormBuilder, Validators } from '@angular/forms';
import { Http, Response, Headers } from '@angular/http';
import { config } from '../config';
import { Subject } from 'rxjs';
import 'rxjs/add/operator/map';
import { map } from 'rxjs/operators';
import 'rxjs/Rx';
import { Observable } from 'rxjs';

// Statics
import 'rxjs/add/observable/throw';


@Component({
  selector: 'app-neo4j-primary',
  templateUrl: './neo4j-primary.component.html',
  styleUrls: ['./neo4j-primary.component.css']
})

export class Neo4jPrimaryComponent implements OnInit {

  constructor(private http: Http,  private notify: ToasterService) { }

  ngOnInit() {
    this.viewNodesStart();
  }


  emptyObj;
  info;

  // -------------------------------  Nodes Entire Data --------------

   viewNodesStart() {

    console.log("INSIDE viewNodesStart()")

    // Nodes Value

    console.log("inside Nodes Value");
    var data = localStorage.getItem('token');

    console.log("data is=>",data);

    var url = config.url;
    var port = config.port;

    this.http.post("http://"+url+":"+port+"/viewNodesStart",this.emptyObj)
      .map(Response => Response.json())
      .subscribe((res: Response) => {

        console.log("XXXXXXXXXXXX Response on /viewNodesStart", res);

        this.info = res;

        console.log('success', this.info.statusCode);
        if (this.info.statusCode == 200) {
          this.notify.Success("Data added successfully");

        } else {
          this.notify.Error("Data is not inserted")
        }
      });

  }

}

服务器.js

var express = require('express');
var cors = require('cors');
var bodyParser = require('body-parser');
const neo4j = require('neo4j-driver').v1;

var app = express();
var restify = require('restify');
var expressJwt = require('express-jwt');
var session = require('express-session');
var config = require('./config.json')

app.use(restify.plugins.bodyParser());

app.use(bodyParser.urlencoded({
  extended: false
}));

app.use(bodyParser.json());

app.use(bodyParser.json({
  type: 'application/vnd.api+json'
}))

app.use(cors());

app.use(session({
  secret: config.secret,
  resave: false,
  saveUninitialized: true
}));

//*****TM Server ******/

app.use('/viewNodesStart', require('./neo4jserver/tmserver'));

app.get('/', function(req, res) {
  res.send('Welcome');
  console.log("welcome in console");

});

// start server
var server = app.listen(7473, function() {
  console.log('Server listening at http://' + server.address().address + ':' + server.address().port);
});

节点服务器.js

// Require Neo4j
var neo4j = require('neo4j-driver').v1;
var path = require('path');
var logger = require('morgan');
var bodyParser = require('body-parser');
var express = require('express');

var router = express.Router();
var app = express();

// Create Driver
const driver = new neo4j.driver("bolt://localhost:11001",neo4j.auth.basic("neo4j", "abc"));

// Run Cypher query
const cypher = 'MATCH (n) RETURN count(n) as count';

//View Engine

app.set('views', path.join(__dirname, 'views'));

app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(express.static(path.join(__dirname, 'public')));

var session = driver.session();

app.post('/', function(req, res) {
  console.log("INSIDE NODE JS CONTROLLER OF viewNodesStart");
  console.log("BODY IS ", req.body);

  var log = JSON.parse(req.body);

  console.log(log);
  session.run('MATCH (n) RETURN n LIMIT 25').then(function(result) {
    result.records.forEach(function(record) {
      console.log("record", record);
      console.log("result = ", result)

      console.log("record._fields[0].properties", record._fields[0].properties);
      res.status(200).send({
        statusCode: '200',
        result: result
      });
    });
  }).catch(function(err) {
    console.log(err);
  }).then(res=>{
    console.log("res.records.length", res.records.length);
  }
  )
  res.send('It Works');
  res.send(result);

});

var allowCrossDomain = function(req, res, next) {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
  res.header('Access-Control-Allow-Headers', 'Content-Type');
  if (req.method === "OPTIONS")
    res.send(200);
  else
    next();
}

console.log('Server started on port 11005');

module.exports = router;
module.exports = app;

标签: node.jsangularhttpneo4jhttpresponse

解决方案


我想问题出在您传递给http请求的 url 上。您正在传递 anuglar 路线的路径并想要调用节点 api。将那里的 url 更改为 nodeapi url。然后它将起作用。


推荐阅读