2017-08-30 19 views
0

私はもともとノードv4.4.5を使用していましたが、動作中のnodemonは動作していたようでした。私が新しいバージョンをインストールするとすぐに、すべてが壊れました。なぜ私は単純なノードを実行しようとしているので、私はこのエラーが表示されているのか分かりません。TypeError:最初の引数は文字列またはバッファでなければなりません

コードを参照してください。

var http = require('http'); 
var fs = require('fs'); 
var server = http.createServer(function (request, response){ 
console.log('client request URL: ', request.url); 
if(request.url === '/') { 
    fs.readFile('index.html', 'utf8', function (errors, contents){ 
     response.writeHead(200, {'Content-Type': 'text/html'}); 
     response.write(contents); 
     response.end(); 
    }); 
} 
else { 
    response.writeHead(404); 
    response.end('File not found!!!'); 
} 
}); 
server.listen(8000); 
console.log("Running in localhost at port 8000"); 
+1

エラーが発生した行を定義してください。 'content'が定義されていないため、この問題の理由の1つは' response.write'行です。たぶん 'fs.readFile'コールバックがエラー(エラー)を受け取り、そのエラーをチェックしていない可能性があります。 –

+0

@MatteoRagniに同意すると、エラーの原因となる行番号が表示される必要があります。また、ファイルの読み取りに失敗する可能性もあります。 – shaochuancs

+0

これは指定しません。ターミナルで実行されますが、ウェブ上のlocalhostに行くと、そのエラーが発生します。 – Gkata

答えて

0

ノードバージョン:V8.2.1でコードを実行しました。 ページはエラーなしでレンダリングされます。 Node.jsの最新の安定版をインストールしてください。V6.11.2

+0

read-fileとwrite-responseは非常に基本的な操作なので、Node.js環境の問題ではありません。 – shaochuancs

+0

これは端末で実行されますが、ローカルホストで開くとすぐにそのエラーが発生します。 ' – Gkata

+0

は、ルートレベルのディレクトリ などであなたのindex.htmlを置きます。あなたは正しい、それは未定義であったので、その特定の行と関係していた。ここでエラーが私に与えていたものです。 –

0

エラーの行を知らずにはかなり難しいです。使用しているライブラリは非常に基本的なものであり、採用している機能は、あなたが引用したバージョン間で(インタフェースの点で)異なってはいけません。

読み取り操作を確認することをお勧めします。 fs.readFileのコールバックには、チェックされていないerrorsフィールドがあります。エラーが発生した場合、contentsは未定義のままである可​​能性があります。したがって、エラーはバッファまたは文字列を引数として必要とするresponse.writeメソッドによって発生します。

あなたは試すことができます:

response.write(String(contents)); 
をし、あなたのページには、単純な文字列 "undefined" が表示されるはずです。その場合、次のステップは「index.html」を開くことができない理由を理解することです。

あなたはノードデバッガを使用して線で、あなたのコード行を実行することがあります。

node inspect script.js 

あなたが停止するラインの検査官によってラインが欲しいdebugger;を挿入する必要があります。ドキュメントhereを確認してください。

+0

は、ドキュメントをありがとう-index.html | -app.js | ' サーバー - : – Gkata

+0

クライアントリクエストURL:/ _http_outgoing.js:457 throw new TypeError( '最初の引数は文字列またはバッファでなければなりません'); – Gkata

関連する問題