由于node.js,无法加载脚本

时间:2017-08-20 11:02:14

标签: javascript jquery node.js

我无法使用<script src="node_modules/jquery/dist/jquery.min.js"></script> 在我的index.html文件中因为:

  

无法加载资源:服务器响应状态为404(未找到)   http://localhost:8080/node_modules/jquery/dist/jquery.min.js

这是因为我在服务器文件代码中的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)

我已经阅读过使用快速模块时如何解决此问题。有没有办法在不使用该模块的情况下解决问题?

2 个答案:

答案 0 :(得分:1)

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

示例:

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

您可以在此处找到从CDN加载jQuery的各种选项:https://code.jquery.com

如果您在代码示例中创建了一个HTTP服务器并希望它为jQuery提供服务,那么您必须使用jquery.min.js阅读fs.readFile并提供其内容,就像您和#39;使用您的data.json文件。

答案 1 :(得分:1)

我建议使用CDN代替。如果你安装了jQuery模块,你可以将它用于你的后端JavasSript。但是你想在前端使用它。您正在使用NodeJS作为Web服务器来提供HTML页面。 http模块对其他文件一无所知,因为它只读取index.html

因此,您可能希望搜索解决方案以阅读/提供完整的文件夹。使用此文件夹,我们可以将其称为public,您可以存储公共可用的HTML,CSS和JS文件。由于HTTP模块知道整个文件夹,因此可以在前端使用所有文件。这也是分离后端en前端JavaScript的好方法。