使用 fs.readFileSync() 提供 html 文件失败
Serve html file with fs.readFileSync() fails
我有这段代码(https://gist.github.com/2402116):
server.get('/', function(request, response) {
var k = fs.readFileSync('./index.html','utf8');
response.send( k );
});
尝试读取此文件:
https://gist.github.com/2402070
浏览器不断加载并且永无止境。
但是如果我从 html 文件中删除所有包含的 js 就可以正常工作。
我做错了什么?
您当前的服务器实现除了index.html
对基本 url 的请求提供服务外,什么都不做,即 '/'
.您将需要编写进一步的代码/路由来为index.html
中包含的js请求提供服务,即 '/app.js'
和'/js/'
中的各种js文件。
现在,要点中的路由实现非常粗糙,不支持 url 匹配的许多方面。原始代码显然只是演示了一个没有资源的单页网站的概念。您将看到让您的代码工作很快就会变得繁琐,因为您实际上必须为每个资源请求编写一条路由,例如
server.get('/app.js', function(request, response) {
var k = fs.readFileSync('./app.js','utf8');
response.send( k );
});
server.get('/js/jquery-1.7.2.js', function(request, response) {
var k = fs.readFileSync('./js/jquery-1.7.2.js','utf8');
response.send( k );
});
etc...
您最好查看已经存在的节点.js url路由库(例如控制器)或Web框架,例如express,它内置了对路由(和静态文件服务)的支持。
将数据发送到浏览器后,您需要一个response.end()
。
实际上,由于您要一次发送所有数据,因此您可以将response.send(k)
替换为 response.end(k)
. 虽然不建议使用此方法。 我强烈建议异步读取文件并将其逐块发送到客户端。
另请参阅:http://nodejs.org/api/http.html#http_response_end_data_encoding
尝试在
k 上.toString
,而不是发送而是.end
response.end( k.toString() );
也许发生了一些奇怪的事情,他试图评估代码
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 导入jQuery脚本获胜'我不处理html文件
- 生成pdf或其他非html文件时的错误处理
- 如果使用javascript函数屏幕太小,我该如何更改HTML文件的背景色
- html文件中的script标记根本不起作用
- 从单独的html文件预览Javascript文本
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- Android在webview中加载带有javascript的html文件,得到Uncaught ReferenceEr
- 什么更好?使用iframe或jQuery之类的东西在外部网站中加载HTML文件
- 当我在浏览器中打开HTML文件时,javascript不起作用
- 如何在另一个html文件的框架中包含图像
- 压缩静态HTML文件中的JS和CSS
- 从HTML文件中的TypeScript(.ts)获取值
- 以HTML文件中的编码形式脱机存储图像
- ionic幻灯片框中的每张幻灯片都有不同的HTML文件
- 加载具有特定CSS的HTML文件
- 使用Gulp手柄部分编译为单个HTML文件
- 使用javascript检查服务器上是否存在html文件
- 在本地启动HTML文件
- javascript从选中的复选框中检索输入值,并在同一网页中显示多个html文件