2016-12-10 20 views
1

私の宣言を指し示している奇妙なエラーを取得しています。Uncaught SyntaxError:予期せぬトークン<(<!DOCTYPE html>から)

最初は、ウェブ開発を学ぶための小さなプロジェクトを作成していました。私は最初静的なWebページとしてこのプロジェクトを開始しましたが、npm apiパッケージ(yelp-node)を使用する必要があったため、これをサーバーに接続することに決めました。ここで私のhtmlファイルを読む私のサーバー側のコードです。そのは不満

https://jsfiddle.net/hgcm3w27/

var http = require('http'); 
var path = require('path'); 
var fs = require('fs'); 

var verifyMimeType = true; 
var port = 8000; 
var serverURL = "127.0.0.1"; 

console.log("Starting web server: " + serverURL + ":" + port); 

var server = http.createServer(function(req,res){ 
    // set to URL or default to index.html 
    var filename = "/index.html" 
    console.log("Filename is: " + filename); 
    // sets the extention of the filename 
    var ext = path.extname(filename); 
    var localPath = __dirname; 
    console.log("Local path: "+ localPath); 
    var validExtentions ={ 
    ".html" : "text/html", 
    ".js": "application/javascript", 
    ".css": "text/css", 
    ".txt": "text/plain", 
    ".jpg": "image/jpeg", 
    ".gif": "image/gif", 
    ".png": "image/png" 
    }; 

    var validMimeType = true; 
    var mimeType = validExtentions[ext]; 
    if(verifyMimeType){ 
    validMimeType = validExtentions[ext] != undefined; 
    } 

    if(validMimeType){ 
    localPath += filename; 
    fs.exists(localPath, function(exists){ 
     if(exists){ 
     console.log("Serving file: " + localPath); 
     getFile(localPath,res,mimeType); 
     } 
     else{ 
     console.log("File not found: " + localPath); 
     res.writeHead(404); 
     res.end(); 
     } 
    }); 
    } 
    else{ 
    console.log("Invalid file extention detected: " + ext); 
    console.log("Invalid file name: " + filename); 
    } 
}); 

server.listen(port,serverURL); 

function getFile(localPath, res, mimeType){ 
    fs.readFile(localPath, function(err, data){ 
    if(err){ 
     console.log("Error with reading file: ("+ err + ")"); 
     res.writeHead(500); 
     res.end(); 
    } 
    else{ 
     res.setHeader("Content-Length", data.length); 
     if(mimeType != undefined){ 
     res.setHeader("Content-Type", mimeType); 
     } 
     res.statusCode = 200; 
     // the end does two things, it write to the response and 
     // ends the response. 
     res.end(data); 
    } 
    }); 
} 

HTMLファイル:

<html> 
    <head> 
    <title>En Route App.</title> 
    <link rel="stylesheet" href="css/stylesheet.css"> 
    .... 

これは、ファイルを読み取り、適切にサーバに接続し、私はそれが私にこの奇妙なエラーを与えているということでしたら、 。 Scripts.jsとyelp.jsのコードがコンソールログのhtmlドキュメントだが、isntということがあるので、ちょっと混乱している。 script.js is the file that contains google map api

答えて

2

サービス提供中のfilenameは、すべてのリクエストで同じです。これは一度だけ設定され、ハードコードされた値に設定されています。アプリケーションからのコンソール出力で

var filename = "/index.html" 

、あなたは要求ごとにこれを見てする必要があります。

Filename is: /index.html 

あなたはreq.urlから要求されているのパスを取得することができ、its pathnameを取得:

var parsedUrl = url.parse(req.url); 
var filename = url.resolve('/', parsedUrl.pathname); 

url.resolve() wiパスに複数の../を追加することで、アプリケーションのパブリックフォルダの外部からファイルを取得しようとする試みを回避するのに役立つでしょう。)


をもURLがディレクトリを参照する場合、デフォルトのファイルを提供するサポートするには、を確認することができます末尾のスラッシュ:

// if requesting a directory, add a default file 
if (/[\/\\]$/.test(filename)) { 
    filename = url.resolve(filename, 'index.html'); 
} 

それとも、あなたはフルディスクパスを知っていれば、それはfs.stats()stats.isDirectory()と、ディスク上のディレクトリだ場合、あなたはindex.htmlを追加するpath.join()を使用し、その後、確認することができます。

+0

それでした!ありがとうジョナサン – exAns

0

拡張子は.jsファイルにhtmlを入れることはできません。この場合、scripts.jsで書いたhtmlをHTMLコードと同じように.htmlファイルに移動したいと思うでしょう。

+0

これは問題ではありません。彼は、scripts.jsとyelp.jsを含む、要求されたすべてのファイルについてindex.htmlの内容を返すだけです。 – ppovoski

1

あなたはクローズタグヘッドを持っていません。これをチェックしてください。

+0

これは問題ではありません。彼は、scripts.jsとyelp.jsを含む、要求されたすべてのファイルについてindex.htmlの内容を返すだけです。 – ppovoski

+0

これは私の問題でした。 – rebirth1078

関連する問題