I am trying to create a mean stack application with Angular 4 that has the flowing file structure:
I am following the book "MEAN Web Development - Second Edition" that example is located on github:https://github.com/PacktPublishing/MEAN-Web-Development/tree/master/Chapter07.
I have only replaced the Angular 2 code base to Angular 4 code base.
index.ejs:
<!DOCTYPE html>
<html>
<head>
<title></title>
<base href="/">
<link rel='stylesheet' href='stylesheets/style.css' />
<link rel="stylesheet" href="lib/bootstrap/dist/css/bootstrap.min.css">
<!-- Polyfill(s) for older browsers -->
<script src="lib/core-js/client/shim.min.js"></script>
<script src="lib/zone.js/dist/zone.js"></script>
<script src="lib/systemjs/dist/system.src.js"></script>
<script src="systemjs.config.js"></script>
<script>
System.import('main.js').catch(function(err){ console.error(err); });
</script>
<link href="lib/bootstrap/dist/css/bootstrap.css" rel="stylesheet"/>
<link href="lib/font-awesome/css/font-awesome.min.css" rel="stylesheet"/>
<script src="lib/jquery/dist/jquery.min.js"></script>
<script src="lib/tether/dist/js/tether.min.js"></script>
<script src="lib/bootstrap/dist/js/bootstrap.js"></script>
</head>
<body>
<mean-app>
<h1>Loading...</h1>
</mean-app>
</body>
</html>
express.js:
const config=require("./config");
const express=require("express");
const morgan=require("morgan");
const compress=require("compression");
const bodyParser=require("body-parser");
const methodOverride=require("method-override");
const session=require("express-session");
const flash=require("connect-flash");
const passport=require("passport");
const path=require("path");
module.exports=function () {
const app=express();
//setting logging for dev and compression for prod
if(process.env.NODE_ENV === 'development'){
app.use(morgan('dev'));
}else if(process.env.NODE_ENV === 'production'){
app.use(compress());
}
//setting body parser that provides several middleware to handle the request data
app.use(bodyParser.urlencoded({
extended:true
}));
app.use(bodyParser.json());
//using the method-override module provides DELETE and PUT HTTP verbs legacy support
app.use(methodOverride());
//Configuring sessions
app.use(session({
saveUninitialized:true,
resave:true,
secret:config.sessionSecret
}));
//Configuring the view system
app.set("views","./app/views");
app.set("view engine","ejs");
//Configuring Connect-Flash
app.use(flash());
//Configuring Passport
app.use(passport.initialize());
app.use(passport.session());
//importing routes
require("../app/routes/index.routes")(app);
require("../app/routes/users.routes")(app);
//Serving static files
app.use("/",express.static("./public"));
//including the Angular library files
app.use("/lib",express.static(path.resolve("./node_modules")));
return app;
};
system.config.js:
/**
* System configuration for Angular samples
* Adjust as necessary for your application needs.
*/
(function (global) {
System.config({
paths: {
// paths serve as alias
'npm:': 'node_modules/'
},
// map tells the System loader where to look for things
map: {
// our app is within the app folder
'app': 'app',
'main': 'main.js',
// angular bundles
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'@angular/http': 'npm:@angular/http/bundles/http.umd.js',
'@angular/router': 'npm:@angular/router/bundles/router.umd.js',
'@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
// other libraries
'rxjs': 'npm:rxjs',
'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
app: {
defaultExtension: 'js',
meta: {
'./*.js': {
loader: 'systemjs-angular-loader.js'
}
}
},
rxjs: {
defaultExtension: 'js'
}
}
});
})(this);
Please anyone suggest what is the problem with my configuration ?
via Rahi Akela
No comments:
Post a Comment