JoshB0807
JoshB0807

Reputation: 29

Node JS and AngularJS - script not found - 404

I am trying to build a simple "Hello world" Node.js/AngularJS app and am struggling. I am running the app through localhost and struggling to figure out why the HTML page isn't finding my script files.

server.js

var express = require('express');
var fs = require('fs');
var app = express();

app.set('port', (process.env.PORT || 5000));

app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/app');
app.set('view engine', 'ejs');

app.get('/', function(request, response) {
  response.render('index');
});

app.listen(app.get('port'), function() {
  console.log('Node app is running on port', app.get('port'));
});

The server is being run successfully. The angularJS application is listed below:

index.ejs

<!DOCTYPE html>

<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script>
    <script src="app.js"></script>
    <script src="Controllers/home.ctrl.js"></script>

</head>

<body ng-app>

    <div ng-view></div>

</body>

</html>

app.js

angular.module("app", ["ngRoute"])
    .config(function($routeProvider){
        $routeProvider
            .when("/", {
                controller: "HomeController",
                templateUrl: "app/Views/home.html"
            });
    });

home.html home.ctrl.js

Folder structure:

The error I am getting in the console:

HTTP404: NOT FOUND - The server has not found anything matching the requested URI (Uniform Resource Identifier).
GET - http://localhost:5000/app.js
HTTP404: NOT FOUND - The server has not found anything matching the requested URI (Uniform Resource Identifier).
GET - http://localhost:5000/Controllers/home.ctrl.js

Upvotes: 0

Views: 3110

Answers (1)

Tamas Hegedus
Tamas Hegedus

Reputation: 29956

The problem is here:

<script src="app.js"></script>
<script src="Controllers/home.ctrl.js"></script>
<script src="app/app.js"></script>

You include two app.js, one of them has the wrong path. Maybe you meant index.js instead.

UPDATE

I see another problem here:

app.use(express.static(__dirname + '/public'));

You serve the folder public, but those files are in app

Upvotes: 1

Related Questions