未捕获的语法错误:意外的令牌(第一个程序)

时间:2019-01-30 18:07:53

标签: javascript html node.js

未捕获的SyntaxError:意外令牌< 使用console.log(“ hello world”)调用javascript;

我要在节点中完成我的第一步,一开始没有任何框架来了解node.js的主要和简单方面

我刚刚在Node.js(main.js)中创建了服务器,并调用了index.html,此index.html称为sayHi.js,它只有一个控制台日志。但是此脚本不起作用...

我想对此HTML文件做一个控制器/脚本来开始编程...

//main.js
var http = require("http");
var fs = require("fs");
var url = require('url');

//create a server object:
http.createServer(function(req, res) {

    if (req.url === "/index" || req.url === '/') {
      fs.readFile('app/views/index.html', function(err, data) {
        res.writeHead(200, {
          'Content-Type': 'text/html'
        });
        console.log("Requested URL is index: " + req.url);
        res.write(data);
        res.end();
      });
    } else if (req.url === "/modbus") {
      fs.readFile('app/views/modbus.html', function(err, data) {
        res.writeHead(200, {
          'Content-Type': 'text/html'
        });
        console.log("Requested URL is index: " + req.url);
        res.write(data);
        res.end();
      });

    } else {
      fs.readFile('app/views/404.html', function(err, data) {
        res.writeHead(200, {
          'Content-Type': 'text/html'
        });
        console.log("Requested URL is index: " + req.url);
        res.write(data);
        res.end();
      });
    }
  })
  .listen(8080); //the server object listens on port 8080
console.log('Server running at http://127.0.0.1:8080');
<!DOCTYPE html>
<html>
  <head>
    <title>Index</title>
    <script src="../scripts/sayHi.js"></script>
    <!-- <link rel="stylesheet" href="/app/styles/myStyle.css" /> -->
  </head>

  <body>
    <h1>Hello! Now you know how to serve HTML files using Node.js!!!</h1>

    <p id="demo"></p>
    <a href="\modbus">Modbus</a>
  </body>

</script>
</html>
//sayHi.js
console.log("hello world");
  

未捕获到的SyntaxError:意外令牌<< / p>

4 个答案:

答案 0 :(得分:2)

我要指出的第一件事是,您的HTML文件正在从../scripts/sayHi.js路径中以sayHi.js的名称查找JavaScript文件。

您的HTML文件在http://localhost:8080/处投放,并尝试获取您没有路由的http://localhost:8080/scripts/sayHi.js,因此server.js将尝试发送错误html,该错误位于404.html文件中。

这是一个HTML文件,但作为javascript文件注入,这将导致浏览器中的控制台错误。

我的建议是在标头中返回适当的状态代码(即404),并在服务器文件中建立到sayHi.js的路由。

答案 1 :(得分:0)

删除脚本标签</script>在html标签</html>上方。

从此更改以下代码:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Index</title>
        <script src="../scripts/sayHi.js"></script>
        <!-- <link rel="stylesheet" href="/app/styles/myStyle.css" /> -->
      </head>

      <body>
        <h1>Hello! Now you know how to serve HTML files using Node.js!!!</h1>

        <p id="demo"></p>
        <a href="\modbus">Modbus</a>
      </body>

    </script>
    </html>

对此:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Index</title>
        <script src="../scripts/sayHi.js"></script>
        <!-- <link rel="stylesheet" href="/app/styles/myStyle.css" /> -->
      </head>

      <body>
        <h1>Hello! Now you know how to serve HTML files using Node.js!!!</h1>

        <p id="demo"></p>
        <a href="\modbus">Modbus</a>
      </body>

    </html>

答案 2 :(得分:0)

 else if(req.url === "/sayHi"){
      fs.readFile('/app/scripts/sayHi.js', function (err, data) {
        res.writeHead(200, {
          'Content-Type': 'text/plain'
        });
        console.log("Requested URL is index: " + req.url);
        res.write(data);
        res.end();
      });

@reza

我该怎么做? 我的建议是在标头中返回适当的状态代码(即404),并在服务器文件中建立到sayHi.js的路由。

答案 3 :(得分:0)

感谢你这么多的帮助:

这句话对我有帮助:我的建议是在标头中返回适当的状态码(即404),并在服务器文件中建立到sayHi.js的路由。

Solution