配置node express以使用单页面应用程序提供静态bower_components?

时间:2018-01-18 16:56:03

标签: javascript angularjs node.js express bower

projectName

    | - client/
        | - css
        | - js
        | - index.html
        | - bower_components/
    | - package.json
    | - server.js

我想启动我的应用并向节点提供index.html。客户端是一个单页的AngularJs应用程序,所以在server.js我检查了这个question,这个one这就是他们的建议:

var router = express();
var server = http.createServer(router);
function runServer() {
     server.listen(PORT,  () =>{
        console.log(`Our app is running on port ${ PORT }`);
    });

    router.use(express.static(path.join(__dirname, 'client')));
    router.use('/bower_components',  express.static( path.join(__dirname, 'client/bower_components')))

    router.get('*', function (req, res) {
        res.sendfile('client/index.html');
    });

}

在index.html的头部,我有:

    <link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/bootstrap.daterangepicker/2/daterangepicker.css"/>
    <script src="/js/jquery.min.js"></script>
    <script src="/js/highstock.js"></script>
    <script src="/js/exporting.js"></script>
    <script src="/socket.io/socket.io.js"></script>
    <script src="/bower_components/angular/angular.js"></script>
    <script src="/bower_components/angular-animate/angular-animate.js"></script>

当我在本地主机上启动服务器时,该应用程序正常运行。但是我在我的主机上运行应用程序,我在浏览器控制台中收到以下错误。

> Uncaught SyntaxError: Unexpected token < angular-animate.js:1 Uncaught
> SyntaxError: Unexpected token < angular-route.js:1 Uncaught
> SyntaxError: Unexpected token < moment.js:1 Uncaught SyntaxError:
> Unexpected token < angular-sanitize.js:1 Uncaught SyntaxError:
> Unexpected token < frontend.js:6 Uncaught ReferenceError: angular is
> not defined

当我在angular.js这样的新选项卡中打开bower_components文件夹内的源文件时,我发现该服务正在提供index.html文件而不是js文件。但是当我打开文件夹css或js中的资源文件时,例如highstock.js,我得到了正确的资源文件。

如何从bower_components提供文件?

0 个答案:

没有答案