const http = require('http');
const fs = require('fs');
const server = http.createServer((request, response) => {
const fileName = '/' + request.url;
console.log(fileName);
fs.readFile(fileName, (error, data) => {
if(error) {
throw new Error('cannot read this file');
} else {
response.write(data);
}
response.end();
});
});
server.listen(6060);
跟着视频学习的。。为啥就不能读取我要的文件呢?我先在文件夹中写入了一个 index.html,然后试着在 localhost:6060/index.html 中读取文件并渲染到浏览器中,但是抛出错误了。
Error: cannot read this file
at ReadFileContext.fs.readFile [as callback] (E:\node_learn\06 - output to c
lient\server.js:10:13)
at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:365:13)
求教我应该怎么解决它呢?我哪里做错了呀~~感谢您的回答。
基本的なデバッグ方法を学ぶ必要があります...
127.0.0.1:6060/index.html にアクセスしていると仮定します。request.url は /index.html で、ファイル名は [//index.html] です。 html]、//index.html を読んでください。どうやって読むのですか?
ファイル名に / を追加しなくても、/index.html を読み取ることはできません。スラッシュを削除して、index.html を直接読む方法を見つける必要があります。これを理解していますか?削除方法としては、単純に request.url を操作するか、slice などの関数を使用して / を削除した結果を取得するか、path などのライブラリ ファイルを使用して解析することができます。
さらに、このコードを読み取ったとしても、ブラウザは読み取ったファイルをテキストとして扱うため、HTML ソース コードが表示されます。ブラウザーに HTML を表示させる場合は、応答ヘッダーで content-type: text/html を指定する必要もあります。これは、content-type を指定しない場合、デフォルトは text/plain となり、テキストとして直接表示されるためです。
相対パスを使用してください