webpack express Uncaught SyntaxError:意外的令牌<

时间:2016-11-24 15:18:32

标签: angularjs express webpack babeljs

我需要帮助,出现此错误" webpack express Uncaught SyntaxError:Unexpected token<"你能告诉我我做错了吗? webpack和express服务器没有报告eny erorrs ..

file struture:
app
package.json
server.js
webpack.config.js
-public
--index.html
--bundle.js
-node_modules
-src
--config.js
--index.js
--about
---about.html
--todos
---todos.html

webpack.config.js

var webpack = require('webpack');
var path = require('path');
module.exports = {
    devtool: 'inline-source-map',
    entry: ['./src'],
    output: {
        path: path.join(__dirname, 'public'),
        filename: 'bundle.js'
    },
    resolve: {
        modulesDirectories: ['node_modules', 'src'],
        extension: ['', '.js']
    },
    module: {
        loaders: [{
            test: /\.js$/,
            exclude: /node_modules/,
            loader: 'babel',
            query: {
                presets: ['es2015']
            }},
        { test: /\.html$/,
            loader: 'raw'}
        ]
    },
    devServer: {
        hot: true,
        proxy: {
            '*': 'http://localhost:3000'
        }
    }
};

index.js

import angular from 'angular';
import appModule from 'config';
angular.bootstrap(document, [appModule.name]);

的index.html

<html>
    <head>
        <title>MEAN ToDo App</title>
        <base href="/">
    </head>
    <body>
        <div ui-view></div>
        <script src="bundle.js"></script>
    </body>
</html>

config.js

import angular from 'angular';
import uiRouter from 'angular-ui-router';


const app = angular.module('app', [uiRouter]);

app.config(($stateProvider, $urlRouterProvider, $locationProvider) => {
    $urlRouterProvider.otherwise('/');

    $stateProvider
        .state('todos', {
            url: '/',
            template: require('todos/todos.html'),
        })
        .state('about', {
            url: '/about',
            template: require('about/about.html')
        });

    $locationProvider.html5Mode(true);
});

export default app;

server.js

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

var PORT = process.env.PORT || 3000;



app.all('/*', function(req, res) {
    res.sendFile(path.join(__dirname, 'public/index.html'));
});

app.listen(PORT, function() {
    console.log('Server running on ' + PORT);
});

bundle.js

2 个答案:

答案 0 :(得分:2)

问题在于节点代码:

app.all('/*', function(req, res) {
   res.sendFile(path.join(__dirname, 'public/index.html'));
});

所有路线都返回index.html。请尝试删除*

答案 1 :(得分:0)

您的快速服务器配置错误 - 它始终返回index.html

请改为尝试:

app.use(express.static('/'));

app.listen(3000, function() {
  console.log('listening');
});

或者从npm使用http-server