javascript - 快递中的路由不符合我的预期
问题描述
我想将我所有的快速路由放在与主文件不同的文件中。但是,由于某种原因,我收到一个错误,描述我的路径顺序错误。为什么是这样?
我的思考过程是这样的:我认为var routes = require('./routes/index.js);
会调用文件index.js
夹中的文件routes
。内index.js
,文件将get
服务器和respond
通过发送tester.hbs
内的文件views
表示res.sendFile(__dirname + '/views/tester.hbs');
。然后router
由 导出module.exports
。与 css 文件相同的逻辑。最后,文件index.js
被server.js
通过调用app.use('/',routes);
。但是,发生在我身上的事情似乎是服务器查看routes
文件,但没有响应index.js
它,而是“进一步”进入routes
文件以查找views/tester
. 我不知道这是为什么。
文件目录:
new
|
node_modules
public---tester.css
views---tester.hbs
routes---index.js
server.js
package.json
package-lock.json
错误:
Error: ENOENT: no such file or directory, stat 'C:\Users\przyb\Desktop\new\routes\views\tester.hbs'
server.js:
//Modules
var http = require('http');
var app = require('express');
var app = app();
var path = require('path');
var hbs = require('express-handlebars');
//Routes
var express = require('express');
var routes = require('./routes/index.js');
//Server
var hostname = '127.0.0.1';
var port = 8000;
//Static files
app.use(express.static(path.join(__dirname +'views')));
app.use(express.static(path.join(__dirname +'public')));
app.use('/',routes);
//View engine setup
app.engine('hbs', hbs({extname: 'hbs', defaultLayout: 'tester', layoutsDir: __dirname + '/views'}));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
//Live server
var server = http.createServer(function(req,res){
res.statusCode = 200;
res.setHeader('Content-Type','text/html');
res.end('Still in server.js');
});
app.listen(8000);
module.exports = app;
var express = require('express');
var router = express.Router();
var path = require('path');
var app = require('express')();
router.get('/', function(req,res,next){
res.sendFile(__dirname + '/views/tester.html');
});
router.get('/', function(req,res,next){
res.sendFile(__dirname + '/public/tester.css');
});
module.exports = router;
我希望服务器routes/index.js
通过var routes = require('./routes/index.js');
和app.use('/',routes);
从那里index.js
进行调查views/tester.hbs
,尽管情况并非如此。
解决方案
您正在发送路径 __dirname + views/tester.html 中的文件。 __dirname为您提供当前文件的路径,即您的路由文件夹,然后您说要在视图文件夹中获取 tester.html,但路由不包含任何名为视图的文件夹。因此,在 __dirname 之后,您需要返回一级,然后转到 views/tester.hbs。
res.sendFile(path.join(__dirname + "/../views/tester.hbs"));
res.sendFile(path.join(__dirname + "/../public/tester.css"));
希望能帮助到你...
推荐阅读
- android - 通过新的 LiveData 更新 RecyclerView
- 从 Room 动态返回
- python - Pandas 数据框无法将超过 200 行导出到 CSV 文件
- session - 树莓派中的 Python 模块会话错误
- c++ - 使用 CMake 更改底层 VERSION 文本文件时,如何始终重新生成版本头文件?
- c# - 将日期字符串转换为 DateTime 格式
- excel - Excel 数据验证取决于其他列值
- python - 用于使用 shutil.copytree() python 3 复制路径列表文件的循环
- jmeter - 在 Jmeter 上使用重复的 HTTP 请求的响应数据填充数组列表
- javascript - 为什么“加载事件在 addEventListener() 上不起作用”?
- c# - OpenFileDialog 在超过 260 个字符的路径上返回空字符串(或根本不返回)