express.js(静态服务器)没有加载我的 javascript
express.js (static server) isn't loading my javascript
我正在使用 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>
浏览器未加载 angular 库,我收到错误 Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/bower_components/angular/angular.min.js".
。
我做错了什么?我找不到前面问题的任何答案。
这一行表示您正在提供来自 ./public
的静态文件
use(express.static('./public'))
所以只有这棵树会暴露给 public:
├── main.html
├── src
└── views
您的 bower_components
目录不在 public 中,因此不会公开。
要解决此问题,您可以在应用程序的根目录中使用以下内容创建一个 .bowerrc
文件:
{
"directory": "public/bower_components/"
}
它将告诉 bower
在 public
而不是默认的 bower_components
目录中安装 bower 组件。创建此文件后 运行 bower install
,不要忘记使用更新后的路径更新 index.html
。
编辑: 不要试图将 use(express.static('./public'))
更改为 use(express.static('./'))
,因为它很容易解决您的问题。它会暴露你的整个目录结构(和你所有的文件)并且出于明显的安全原因是不好的:)
我正在使用 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>
浏览器未加载 angular 库,我收到错误 Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/bower_components/angular/angular.min.js".
。
我做错了什么?我找不到前面问题的任何答案。
这一行表示您正在提供来自 ./public
use(express.static('./public'))
所以只有这棵树会暴露给 public:
├── main.html
├── src
└── views
您的 bower_components
目录不在 public 中,因此不会公开。
要解决此问题,您可以在应用程序的根目录中使用以下内容创建一个 .bowerrc
文件:
{
"directory": "public/bower_components/"
}
它将告诉 bower
在 public
而不是默认的 bower_components
目录中安装 bower 组件。创建此文件后 运行 bower install
,不要忘记使用更新后的路径更新 index.html
。
编辑: 不要试图将 use(express.static('./public'))
更改为 use(express.static('./'))
,因为它很容易解决您的问题。它会暴露你的整个目录结构(和你所有的文件)并且出于明显的安全原因是不好的:)