获取javascript时Node.js HTML页面错误404
Posted
技术标签:
【中文标题】获取javascript时Node.js HTML页面错误404【英文标题】:Node.js HTML page error 404 while getting javascript 【发布时间】:2017-03-28 11:47:16 【问题描述】:我正在使用 node.js,我希望我的 html 文件能够获取 javascript 文件。
这是我使用 node.js 运行的名为 server.js
的文件:
var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res)
res.sendFile(__dirname + '/index.html');
);
http.listen(3000, function()
console.log('listening on *:3000');
);
非常简单的代码用于托管index.html
。这个 HTML 文件有一些脚本标签:
<script type="text/javascript" src="./A.js"></script>
<script type="text/javascript" src="./B.js"></script>
<script type="text/javascript" src="./C.js"></script>
问题是,当我运行 server.js
并转到浏览器时,我在控制台上收到此错误:
GET http://localhost:3000/A.js
GET http://localhost:3000/B.js
GET http://localhost:3000/C.js 404 (Not Found)
404 error not found
文件都在同一个目录中,我不明白为什么它没有得到脚本。
【问题讨论】:
【参考方案1】:您的server.js
不知道如何处理除了对根页面的请求之外的任何事情。 (即使http://localhost:3000/index.html 也会失败并返回 404。)
添加express.static
middleware 以提供目录中的文件:
var express = require('express');
var app = express();
var http = require('http').Server(app);
express.static('public')
app.get('/', function(req, res)
res.sendFile(__dirname + '/index.html');
);
http.listen(3000, function()
console.log('listening on *:3000');
);
现在public
文件夹中的所有文件都将按照您的意愿提供。 (将您的 *.js 文件移动到名为 public
的子文件夹中)
请参阅HyperDev default project template,了解一个很好的互动示例。
【讨论】:
是的,谢谢 :) 您输入的代码中唯一缺少的是声明一个 var express = require('express') 然后 app = express() @NunoMiguelSilva: 啊.. 修好了~【参考方案2】:尝试查看Express1 提供静态文件的文档。
您正在使用这些行来提供您的索引文件:
app.get('/', function(req, res)
res.sendFile(__dirname + '/index.html');
);
您可以使用相同的方式提供 js 文件,也可以将它们放入 public
文件夹并添加 app.use(express.static('public'))
。
然后您可以将它们引用为public/A.js
【讨论】:
在服务器上,该文件将是public/A.js
,但它应该在HTML中引用为./A.js
以上是关于获取javascript时Node.js HTML页面错误404的主要内容,如果未能解决你的问题,请参考以下文章
从javascript获取和从node.js获取节点,有啥区别[关闭]
Node.js 入门:就是运行在服务端的 JavaScript