文件夹结构
app
├── app.js
├── public
│ ├── data
│ │ └── data.json
│ ├── index.html
│ └── js
│ ├── filter-list.js
└── routes
└── index.js
app.js 正确需要index.js路由器
var express = require('express');
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(require('./routes/index'));
var server = app.listen(app.get('port'), function() {
console.log('Listening on port ' + app.get('port'));
});
routes / index.js 找到该文件并提供服务
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.sendFile('/Users/Michael/Desktop/js-list-filter/app/public/');
});
module.exports = router;
public / index.html 是指 filter-list.js
<script type="text/javascript" src="js/filter-list.js"></script>
问题: 路由器正确地提供index.html文件,但是脚本文件的路径被破坏并且不断输出404错误。
我用res.sendFile()路由它的原因是因为这只是一个测试项目,用于从MySQL数据库中提取数据并将其输出到单个页面上,并使用一些脚本来操作它数据。不需要多个页面或视图。
答案 0 :(得分:0)
您应在app.use('/', express.static('public'));
文件中添加app.js
,将公用文件夹设置为静态客户端资产的来源。
答案 1 :(得分:0)
这是提供静态文件的一种非常奇怪的方式。你在哪里看到的?
但是要回答你的问题,你的应用程序只提供根路径。我只能想象res.sendFile()
正在扫描您的/public
目录中的任何以index
开头的内容,因此它会呈现您的index.html
。
您真正想要做的是,在完成所有手动路由后,将以下行放在app.js中:
app.use(express.static(path.resolve(__dirname, './public')));