【问题标题】:express.js (static server) isn't loading my javascriptexpress.js(静态服务器)没有加载我的 javascript
【发布时间】:2015-05-23 17:39:16
【问题描述】:

我正在使用 express.js 作为静态服务器,代码如下所示:

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

app
  .use(express.static('./public'))
  .get('*', function (req, res) {
    res.sendfile('public/main.html');
  })
  .listen(3000);

我的文件结构:

.
├── bower_components
│   ├── angular
│   ├── bootstrap
│   └── jquery
├── node_modules
│   └── express
├── public
│   ├── main.html
│   ├── src
│   └── views
└── server.js

我的 HTML 看起来像这样:

<!DOCTYPE html>
<html ng-app="ContactsApp">
<head lang="en">
  <meta charset="UTF-8">
  <title> Contacts </title>
  <base href="/" />
  <link rel="stylesheet" href="src/bootstrap.min.css"/>

</head>
 <body>    
  <script src="../bower_components/jquery/dist/jquery.min.js"></script>
  <script src="../bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  <script src="../bower_components/angular/angular.min.js"></script>
  <script src="src/app.js"></script>
 </body>
</html>

浏览器未加载角度库,我收到错误Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/bower_components/angular/angular.min.js".

我做错了什么?我无法从之前的问题中找到任何答案。

【问题讨论】:

    标签: javascript html angularjs express server


    【解决方案1】:

    这一行表示您正在从./public 提供静态文件

    use(express.static('./public'))
    

    所以只有这棵树会公开:

       ├── main.html
       ├── src
       └── views
    

    您的bower_components 目录未公开,因此不会暴露。

    要解决此问题,您可以使用以下内容在应用程序的根目录中创建一个 .bowerrc 文件:

    {
      "directory": "public/bower_components/"
    }
    

    它会告诉bower 将凉亭组件安装在public 而不是默认的bower_components 目录中。创建此文件后只需运行bower install,不要忘记使用更新后的路径更新您的index.html

    编辑:不要试图将use(express.static('./public')) 更改为use(express.static('./')),因为它可以轻松解决您的问题。它会暴露你的整个目录结构(以及你所有的文件)并且出于明显的安全原因并不好:)

    【讨论】:

    • 你是对的!该目录未向静态服务器公开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2013-03-03
    • 2016-02-16
    相关资源
    最近更新 更多