0

I am facing an issue while running the angular and nodejs app which I am trying to integrate with Neo4j app. The issues are the errors that I get-

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

and

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

Though this topic is repetitive in StackOverflow , I am still posting it because the following links suggestions didn't suit my issue.

Angular2 404 Not Found for URL: http://localhost/WebApi2/api/hero

EXCEPTION: Response with status: 404 Not Found for URL / Angular2

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

Please check my code

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")
        }
      });

  }

}

server.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);
});

nodeserver.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;
7
  • can you show us the full url console.log("http://"+url+":"+port+"/viewNodesStart") Commented Oct 9, 2018 at 10:27
  • server.js and nodeserver.js which one you are using? Commented Oct 9, 2018 at 10:29
  • Its this - localhost:7474/#/neo4j-primary (i run it in browser ). And the url in angular when decoded is --> localhost:7474/viewNodesStart Commented Oct 9, 2018 at 10:29
  • both ... server.js connects my node and angular counterpart . And nodeserver.js is my node controller file Commented Oct 9, 2018 at 10:30
  • what is the url in the browser? Angular path basically Commented Oct 9, 2018 at 10:32

1 Answer 1

0

I guess the problem is with the url you are passing to the http request. You are passing the path of the anuglar route and want to call the node api. Change the url there to the nodeapi url. Then it will work.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.