Я пытаюсь изучить файл express.js на моем сервере узлов и пытаюсь скопировать то же самое из модуля http в Express Framework.
дальнейшее объяснение: я использовал первый код до того, как начал использоватьExpress, в котором у меня есть файл filet в папке "site" с веб-страницами, такими как
e:
|_node.js
|_node_modules
|_site
| |_abc
| | |_123.html
| | |_456.html
| | |_789.html
| |_cde
| | |_123.html
| | |_456.html
| | |_789.html
| |_abc.html
| |_cde.html
|_server.js
, и я обычно обращаюсь к ним в URL, просто используя localhost: 8080 / abc / 123 для получения / site / abc/123.html.
var http = require('http');
var url = require('url');
var fs = require('fs');
var port = 8080;
http.createServer(function (req, res) {
var q = url.parse(req.url, true);
var filename = "./site" + q.pathname + ".html";
fs.readFile(filename, function(err, data) {
if (err) {
res.writeHead(404, {'Content-Type': 'text/html'});
return res.end("404 Not Found");
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
return res.end();
});
}).listen(port);
console.log('Running on port ' + port);
здесь, я попытался сделать это
var url = require('url');
var fs = require('fs');
var express = require('express');
var app = express();
var port = 8080;
var site = "/site"
app.get('*', function (req, res) {
var q = url.parse(req.url, true);
var filename = site + q.pathname + ".html";
fs.readFile(filename, function(err, data) {
if (err) {
console.log(err);
res.writeHead(404, {'Content-Type': 'text/html'});
return res.end("404 Not Found");
}
res.writeHead(200, {'Content-Type': 'text/html'});
res.sendFile(filename, { root: __dirname + site } );
return res.end();
});
})
var server = app.listen(port, function () {
console.log('Running on port ' + port);
})
, но теперь с помощью экспресс-фреймворка, когда я набираю localhost: 8080 / abc / 123, но он возвращает только 404Не найдено при наборе http://localhost:8080/abc
, очевидно, ошибка содержит
{[Error: ENOENT: no such file or directory, open 'e:\site\abc.html']
errno: -4058,
code: 'ENOENT',
syscall: 'open',
path: 'e:\\site\\abc.html'}
полный путь должен быть
e: \ node.js \ site \ abc.html
и server.js находится в e: \ node.js
почему он возвращается к e: чем к e: \ node.js
прямо сейчас яЯ предполагаю, что «root: __dirname» вызывает ошибку, что я должен заменить его, чтобы он начинался с e: /node.js, а неe:?