Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';由于node.js,无法加载脚本_Javascript_Jquery_Node.js - Fatal编程技术网

Javascript Can';由于node.js,无法加载脚本

Javascript Can';由于node.js,无法加载脚本,javascript,jquery,node.js,Javascript,Jquery,Node.js,我不能使用 在my index.html文件中,因为: 加载资源失败:服务器响应状态为404(未找到) 发生这种情况的原因是服务器文件代码中的else语句: var http = require('http') var url = require('url') var fs = require('fs') var server = http.createServer((req, res) => { let parsedUrl = url.parse(req.url, true) if

我不能使用
在my index.html文件中,因为:

加载资源失败:服务器响应状态为404(未找到)

发生这种情况的原因是服务器文件代码中的else语句:

var http = require('http')
var url = require('url')
var fs = require('fs')

var server = http.createServer((req, res) => {
let parsedUrl = url.parse(req.url, true)

if (parsedUrl.pathname === '/') {
    console.log('home page')
    fs.readFile('./index.html', (err, data) => {
        res.writeHead(200, { 'Content-Type': 'text/html' })
        res.end(data)
    })
} else if (parsedUrl.pathname === '/readJson') {
    console.log('read json')
    fs.readFile('./data.json', (err, data) => {
        res.writeHead(200, { 'Content-Type': 'application/json' })
        res.end(data)
    })
} else {
    console.log('We can\'nt load any resources because of this statement')
    res.writeHead(404)
    res.end()
}
})
server.listen(8080)

我已经阅读了有关如何在使用express模块时解决此问题的内容。有没有办法不使用该模块就解决这个问题?

最简单的方法是从CDN加载jQuery,而不是从您自己的服务器提供服务。这是一种被广泛接受的最佳做法

例如:

<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>

您可以在此处找到从CDN加载jQuery的各种选项:


如果您像代码示例中那样创建一个HTTP服务器,并希望它为jQuery服务,那么您必须使用
fs.readFile
读取
jQuery.min.js
并提供其内容,就像处理
data.json
文件一样。

最简单的方法就是从CDN加载jQuery,而不是从自己的服务器上提供服务。这是一种被广泛接受的最佳做法

例如:

<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>

您可以在此处找到从CDN加载jQuery的各种选项:


如果您像代码示例中那样创建一个HTTP服务器,并希望它为jQuery服务,那么您必须使用
fs.readFile
读取
jQuery.min.js
并提供其内容,就像处理
数据.json
文件一样。

我建议改用CDN。如果安装jQuery模块,则可以将其用于后端JavasSript。但是,您希望在前端使用它。您使用NodeJS作为web服务器来服务HTML页面。http模块对其他文件一无所知,因为它只读取
index.html


因此,您可能需要搜索一个解决方案来读取/提供完整的文件夹。有了这个文件夹,我们可以称之为
public
,您可以存储公共可用的HTML、CSS和JS文件。因为HTTP模块知道整个文件夹,所以所有文件都可以在前端使用。这也是将后端与前端JavaScript分开的一个很好的解决方案。

我建议使用CDN。如果安装jQuery模块,则可以将其用于后端JavasSript。但是,您希望在前端使用它。您使用NodeJS作为web服务器来服务HTML页面。http模块对其他文件一无所知,因为它只读取
index.html


因此,您可能需要搜索一个解决方案来读取/提供完整的文件夹。有了这个文件夹,我们可以称之为
public
,您可以存储公共可用的HTML、CSS和JS文件。因为HTTP模块知道整个文件夹,所以所有文件都可以在前端使用。这也是将后端与前端JavaScript分开的一个很好的解决方案。

谢谢。这很有帮助。无论如何,我仍然想找到一个解决方案,它只站在当前加载的模块和文件。我只是好奇这是否有可能,但我不推荐。在我的回答中添加了一些说明我从一开始就有这个想法(使用fs.readFile阅读jquery.min.js)。但我认为这是一种可怕的解决方案。你不这么认为吗?也许让文件在前端部分可见更好?这是非常可怕的,但我认为你有一个误解。“使文件可见”是什么意思?您正在设置一个HTTP服务器来处理请求和提供数据。从本地文件系统向客户端提供数据的唯一方法是通过此服务器。基本上,您必须自己编写所有代码:扫描文件夹中的文件,加载每个文件,计算这些文件的传入请求,发送这些文件的文件内容。你会重新发明轮子。您应该认真研究一下使用Express,它有一个用于服务静态文件的中间件,这使它变得非常简单。谢谢。这很有帮助。无论如何,我仍然想找到一个解决方案,它只站在当前加载的模块和文件。我只是好奇这是否有可能,但我不推荐。在我的回答中添加了一些说明我从一开始就有这个想法(使用fs.readFile阅读jquery.min.js)。但我认为这是一种可怕的解决方案。你不这么认为吗?也许让文件在前端部分可见更好?这是非常可怕的,但我认为你有一个误解。“使文件可见”是什么意思?您正在设置一个HTTP服务器来处理请求和提供数据。从本地文件系统向客户端提供数据的唯一方法是通过此服务器。基本上,您必须自己编写所有代码:扫描文件夹中的文件,加载每个文件,计算这些文件的传入请求,发送这些文件的文件内容。你会重新发明轮子。您应该认真研究一下如何使用Express,它有一个用于服务静态文件的中间件,这使它变得非常简单。谢谢您的回复。我想这是我正在寻找的解决办法。如果你不介意的话,再问一个问题:如何让node.js读取/服务于一个完整的文件夹?你可以使用
fs.readFile('./index.html',…)
而不是
fs.readFile(路径到公共文件夹+'/'+parsedUrl.pathname,…)
。您可能需要确保parsedUrl.pathname`始终是小写的。想想
url.parse
已经为您做到了这一点。您也可以使用express。谢谢你的回复。我想这是我正在寻找的解决办法。如果你不介意的话,再问一个问题:如何让node.js读取/服务于一个完整的文件夹?你可以使用
fs.readFile('./index.html',…)
而不是
fs.readFile(路径到公共文件夹+'/'+parsedUrl.pathname,…)
。您可能需要确保parsedUrl.pathname`始终是小写的。想想
url.parse
已经为您做到了这一点。您也可以使用express。看见