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을 조작하거나, /를 제거한 후 슬라이스 등의 함수를 사용하여 결과를 얻거나, 경로 및 기타 라이브러리 파일을 사용하여 구문 분석할 수 있습니다.
또한 이 코드를 읽어도 브라우저에 렌더링할 수 없습니다. 브라우저는 읽은 파일을 텍스트로 처리하므로 HTML 소스 코드가 표시됩니다. 브라우저가 HTML을 렌더링하도록 하려면 응답 헤더에 content-type: text/html도 지정해야 합니다. 왜냐하면 content-type을 지정하지 않으면 기본값은 텍스트로 직접 표시되는 text/plain이기 때문입니다.
상대경로를 이용해 주세요