未捕获的SyntaxError:意外的令牌< (来自)

时间:2016-12-10 04:49:49

标签: javascript html node.js

我得到这个奇怪的错误,指向我的声明,无法弄清楚如何解决它。

所以最初,我正在创建一个小项目来帮助我学习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文档,但不是。 script.js is the file that contains google map api

4 个答案:

答案 0 :(得分:3)

每个请求所服务的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()有助于避免尝试通过向路径添加多个../从应用程序的公用文件夹外部检索文件。)

要在URL引用目录时也支持提供默认文件,您可以检查尾部斜杠:

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

或者,一旦您知道完整磁盘路径,就可以检查它是否是fs.stats()stats.isDirectory()磁盘上的目录,然后使用path.join()附加{{1 }}

答案 1 :(得分:1)

你没有关闭标签头,请检查一下。

答案 2 :(得分:0)

您无法将HTML放入.js文件中,扩展很重要。在这种情况下,您将要将您在scripts.js中编写的HTML移动到.html文件中,因为它是HTML代码。

答案 3 :(得分:0)

我在我的codeigniter网站localhost上遇到类似的问题。我可以通过更改根文件夹中.htaccess文件的内容来解决此问题。

这是我使用的.htaccess代码

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php/$1 [PT,L]