简体   繁体   中英

Unexpected Token . when running server.js

I'm currently writing a web application with the MEAN stack, and am testing to see if my nodejs server is working. Here's my server.js:

    // server.js
    'use strict';

    // modules =================================================
    const path = require('path');
    const express = require('express');
    const app = express();
    const bodyParser = require('body-parser');
    const methodOverride = require('method-override');

    // configuration ===========================================

    // config files
    const db = require('./config/db');

    // set our port
    var port = process.env.PORT || 8080;

    // connect to mongoDB
    // (uncomment after entering in credentials in config file)
    // mongoose.connect(db.url);

    // get all data/stuff of the body (POST) parameters
    // parse application/json
    app.use(bodyParser.json());

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

    // parse application/x-www-form-urlencoded
    app.use(bodyParser.urlencoded({ extended: true }));

    // override with the X-HTTP-Method-Override header in the request simulate DELETE/PUT
    app.use(methodOverride('X-HTTP-Method-Override'));

    // set the static files location /public/img will be /img for users
    app.use(express.static(__dirname + '/public'));

    // routes ==================================================
    require('./app/routes')(app); // configure our routes

    // start app ===============================================
    // startup our app at http://localhost:8080
    app.listen(port);

    // shoutout to the user
    console.log('App running on port ' + port);

    // expose app
    exports = module.exports = app;

I currently have it redirecting all routes to my index.html file to test to make sure my views are working. Here's my routes.js:

    // models/routes.js

    // grab the user model
    var User = require('./models/user.js');

    module.exports = {
        // TODO: Add all routes needed by application

        // frontend routes =========================================================
        // route to handle all angular requests
        app.get('*', function(req, res) {
            res.sendfile('./public/index.html'); // load our public/index.html  file
        });
    };

However, when I try to run node server.js , it gives me this error:

    /home/hess/Projects/FitTrak/app/routes.js
        app.get('*', function(req, res) {
           ^

    SyntaxError: Unexpected token .

Does anyone have any idea what's causing this? I checked and all my braces and parentheses are all closed and written correctly.

As Jose Hermosilla Rodrigo said in his comment, you're declaring the object literal module.exports wrong. It should look like this instead:

module.exports = function(app) {
    app.get('*', function(req, res) {
        res.sendfile('./public/index.html'); // load our public/index.html  file
    });
};

just try this code...

// models/routes.js

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

// TODO: Add all routes needed by application

        // frontend routes =========================================================
        // route to handle all angular requests
 app.get('*', function(req, res) {
            res.sendfile('./public/index.html');
        });

module.exports = route;

server.js

'use strict';

const path = require('path');
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
var route=require('./models/route.js');
const methodOverride = require('method-override');

// configuration ===========================================

// config files
const db = require('./config/db');

// set our port
var port = process.env.PORT || 8080;

// connect to mongoDB
// (uncomment after entering in credentials in config file)
// mongoose.connect(db.url);

// get all data/stuff of the body (POST) parameters
// parse application/json
app.use(bodyParser.json());

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

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));

// override with the X-HTTP-Method-Override header in the request simulate DELETE/PUT
app.use(methodOverride('X-HTTP-Method-Override'));

// set the static files location /public/img will be /img for users
app.use(express.static(__dirname + '/public'));

// routes ==================================================
require('./app/routes')(app); // configure our routes

// start app ===============================================
// startup our app at http://localhost:8080
app.listen(port);

// shoutout to the user
console.log('App running on port ' + port);


 app.use('/',route);

If you are using MEAN stack I would suggest you to use express own router middleware to handle all your routes. Just include.

var router = express.Router();
    //use router to handle all your request
    router.get(/xxx,function(req, res){
    res.send(/xxxx);
    })

   // You may have n number of router for all your request
   //And  at last all you have to do is export router

     module.exports = router;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM