初学 node.js,读取本地html文件报错
迷茫
迷茫 2017-04-17 16:14:02
0
2
471
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 を操作するか、slice などの関数を使用して / を削除した結果を取得するか、path などのライブラリ ファイルを使用して解析することができます。

さらに、このコードを読み取ったとしても、ブラウザは読み取ったファイルをテキストとして扱うため、HTML ソース コードが表示されます。ブラウザーに HTML を表示させる場合は、応答ヘッダーで content-type: text/html を指定する必要もあります。これは、content-type を指定しない場合、デフォルトは text/plain となり、テキストとして直接表示されるためです。

いいねを押す +0
黄舟

相対パスを使用してください

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート