[英]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>
浏览器未加载角度库,但我收到一个错误Resource interpreted as Script but transferred with MIME type text/html: "http://localhost:3000/bower_components/angular/angular.min.js".
,该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'))
因此,只有这棵树才会向公众公开:
├── main.html
├── src
└── views
您的bower_components
目录不公开,因此不公开。
要解决此问题,可以使用.bowerrc
命令在应用程序的根目录中创建一个.bowerrc
文件:
{
"directory": "public/bower_components/"
}
它会告诉bower
在安装凉亭的部件public
,而不是默认的bower_components
目录。 创建此文件后,只需运行bower install
,别忘了用更新后的路径更新index.html
。
编辑:不要被诱惑改变use(express.static('./public'))
通过use(express.static('./'))
因为它会很容易地解决您的问题。 它会暴露整个目录结构(和所有文件),并且出于明显的安全原因是不好的:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.