gpt4 book ai didi

html - 无法导入脚本 Node.js 服务器

转载 作者:搜寻专家 更新时间:2023-10-31 23:02:39 26 4
gpt4 key购买 nike

我正在创建一个带有 Node 的 http 服务器,该 Node 读取一个简单的 html 文件。此 html 文件导入了一些位于我的计算机中的脚本。 Node 无法加载此脚本。为什么?

    var http = require('http');
var io = require('socket.io').listen(2210);
var fs = require('fs');

http.createServer(function(req, res){
fs.readFile("./index.html", function(err, data){
if (err){
res.writeHead(500);
res.end("Error loading index.html");
}
res.writeHead(200, {"Content-Type":"text/html"});
res.end(data, 'utf-8');
});
}).listen(2211);

io.sockets.on('connection', function(socket){

});

这是 html 文件:

<!DOCTYPE html> 
<html>
<head>
<title>ASGEAWER</title>
<meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1">
<link rel="stylesheet" href="jquery-mobile/jquery.mobile.css" />
<link rel="stylesheet" href="jquery.mobile.splitview.css" />
<link rel="stylesheet" href="jquery.mobile.grids.collapsible.css" />
<script type="text/javascript" src="jquery-1.7.1.js"></script>
<script type="text/javascript" src="jquery.mobile.splitview.js"></script>
<script type="text/javascript" src="jquery.mobile.js"></script>
<script type="text/javascript" src="servernode.js"></script>
<script type="text/javascript" src="interaction.js"></script>
<script type="text/javascript">
$(document).on("ready",inici);
</script>
</head>

<body>

<div data-role="panel" data-id="menu" data-hash="crumbs" data-context="a#default">

<!-- Start of first page -->
<div data-role="page" id="main" data-hash="false">

<div data-role="header" data-position="fixed">
<h1>Categoria</h1>
</div><!-- /header -->

<div data-role="content">
<ul data-role="listview">

</ul>
</div>

</div><!-- /page -->

</div><!-- panel menu -->






<div data-role="panel" data-id="main">
<!-- Start of 6th page -->
<div data-role="page" id="aboutsv">

<div data-role="header" data-theme="b">
<h1>Productos</h1>
</div><!-- /header -->

<div data-role="content">
</div><!-- /content -->
</div><!-- /page -->

</div><!-- panel main -->


</body>
</html>

chrome 给我这些错误:

Uncaught SyntaxError: Unexpected token < jquery-1.7.1.js:1
Uncaught SyntaxError: Unexpected token < jquery.mobile.splitview.js:1
Uncaught SyntaxError: Unexpected token < jquery.mobile.js:1
Uncaught SyntaxError: Unexpected token < servernode.js:1
Uncaught SyntaxError: Unexpected token < interaction.js:1
Uncaught ReferenceError: $ is not defined

最佳答案

This html file imports some scripts that are located in my computer

浏览器在找到 <script> 时会做什么具有 src 属性的标记是向服务器(在本例中为您的 Node http 服务器)发出另一个请求以请求该文件。

在您的情况下,您的服务器使用 index.html 内容响应每个请求。

因此,为了导入这些文件,您必须更改您的 http.createServer 回调以使用该文件的内容响应每个静态文件请求,而不是始终使用 index.html 内容进行响应

应该是这样的:

首先,创建一个处理内容类型的函数

function contentType(ext) {
var ct;

switch (ext) {
case '.html':
ct = 'text/html';
break;
case '.css':
ct = 'text/css';
break;
case '.js':
ct = 'text/javascript';
break;
default:
ct = 'text/plain';
break;
}

return {'Content-Type': ct};
}

然后,重新定义您的服务器代码:

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

var HTTP_OK = 200,
HTTP_ERR_UNKNOWN = 500,
HTTP_ERR_NOT_FOUND = 404;

http.createServer(function (req, res) {
var filepath = '.' + (req.url == '/' ? index : req.url),
fileext = path.extname(filepath);

path.exists(filepath, function (f) {
if (f) {
fs.readFile(filepath, function (err, content) {
if (err) {
res.writeHead(HTTP_ERR_UNKNOWN);
res.end();
} else {
res.writeHead(HTTP_OK, contentType(fileext));
res.end(content);
}
});
} else {
res.writeHead(HTTP_ERR_NOT_FOUND);
res.end();
}
});
});

这是一个简单的自制静态服务器,但如果为此使用库会更好:

关于html - 无法导入脚本 Node.js 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com