在本地计算机上的nodejs服务器/托管jQuery不起作用

时间:2018-11-29 20:47:44

标签: javascript jquery node.js

我使用nodejs创建了简单的服务器,并让它调用了调用iquery的html文件。但是它不适用于显示以下两个错误的浏览器。
1.“未捕获的SyntaxError:意外的令牌<”
2.“未捕获的ReferenceError:$未在(index):13处定义”

(服务器端代码)

var app = require('http').createServer(handler);
var fs = require('fs');
app.listen(1337);
function handler(req, res){
        fs.readFile('index_test1.html', function(err, data){
         if(err){
            res.writeHead(500);
            return res.end("Error");                
        }
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.write(data);
        res.end();
    });

}

(index_test1.html代码)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Demo1</title>
<script src="jquery-3.3.1.min.js"></script>
<style type="text/css"></STYLE>
</HEAD>
<BODY>
  <p id="test"></p>
  <script>
    $(function(){
        $('#test').text('Hello World!');
    });
   </script>
</BODY>
</HTML>

jquery-3.3.1.min.js与server.js和index_test.html存在于同一文件夹中。
我希望有人在这个问题上帮助我。 谢谢,

2 个答案:

答案 0 :(得分:1)

您编写的代码发生了一件有趣的事情。您是否为每个请求提供一个文件(index_test1.html)?因为您已经在处理程序中对其进行了硬编码。

因此,当您打开localhost:1337时,会看到index_test1.html文件。

现在,在该html中,您将导入一个jQuery文件。但是,请猜怎么着,您只有 ONE 处理程序,而localhost:1337/jquery-3.3.1.min.js将通过 SAME 处理程序,是的!您知道了!,提供相同的完全相同的index_test1.html文件。

在浏览器中打开服务器时,请打开Developer Tools并转到Network标签。并再刷新一次以查看网络请求。您会看到我在说什么。

您想做的是猜一个Basic static file server in NodeJS(来自@james的评论)?有很多很好的教程可以帮助您做到这一点。但是我认为您的问题很有趣,因此在此进行了解释。希望这可以为您解决一些问题。

答案 1 :(得分:-2)

您可能尚未下载jquery。尝试将其放在脚本中: https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js