初学 node.js,读取本地html文件报错
迷茫
迷茫 2017-04-17 16:14:02
0
2
475
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)

求教我应该怎么解决它呢?我哪里做错了呀~~感谢您的回答。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(2)
刘奇

기본 디버깅 방법을 배워야 합니다...
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이기 때문입니다.

黄舟

상대경로를 이용해 주세요

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿