Javascript 如何使用Node.js读取不同名称的文件?
我有一个包含HTML文件的文件夹,它有两个不同的类别。其中一个是名为arq.html的主页,其中包含其他页面的索引。所有其他页面都包含关于特定个人的实际信息,并且名称为arqx.html,其中x对应于页面的编号 我试图做的是能够单击一个索引并进入相应的HTML页面。每个索引都有一个URL localhost:7777/arq/x 例如,localhost:7777/arq/7应该使用arq7.html文件进行应答 目前,我有以下代码:Javascript 如何使用Node.js读取不同名称的文件?,javascript,html,node.js,Javascript,Html,Node.js,我有一个包含HTML文件的文件夹,它有两个不同的类别。其中一个是名为arq.html的主页,其中包含其他页面的索引。所有其他页面都包含关于特定个人的实际信息,并且名称为arqx.html,其中x对应于页面的编号 我试图做的是能够单击一个索引并进入相应的HTML页面。每个索引都有一个URL localhost:7777/arq/x 例如,localhost:7777/arq/7应该使用arq7.html文件进行应答 目前,我有以下代码: var http = require('http') var
var http = require('http')
var fs = require('fs')
http.createServer(function (req, res){
var num = req.url.split("/")[req.url.length-1]
fs.readFile('arq' + num +'.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'})
res.write(data)
res.end()
})
}).listen(7777);
console.log('Servidor à escuta na porta 7777...')
var num
是我用来解析url的东西,这样我就可以得到实际的x。我不确定是解析错误,还是我把文件位置搞砸了
另外,我得到的错误是:
_http_outgoing.js:696
throw new ERR_INVALID_ARG_TYPE('first argument',
^
TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer or Uint8Array. Received undefined
at write_ (_http_outgoing.js:696:11)
at ServerResponse.write (_http_outgoing.js:661:15)
at ReadFileContext.callback (C:\Users\joao_\OneDrive\Ambiente de Trabalho\dataset\server1.js:8:13)
at FSReqCallback.readFileAfterOpen [as oncomplete] (fs.js:273:13) {
code: 'ERR_INVALID_ARG_TYPE'
}
您应该
console.log(data)
查看您得到的不是字符串或缓冲区的内容
您还应该查看err
,以了解读取文件时是否出错
在这种情况下,有一个错误,因此数据
是未定义的
该错误是由于文件名错误引起的
req.url.split(“/”
为您提供了一个数组,但这不是您正在读取的.length
req.url
从错误表中,您对请求url中的num
变量的计算看起来可能是错误的。做一个console.log(num)
,看看你到底有什么。这是基本的调试,在您来到这里之前,您应该自己进行调试。仅供参考,使用Express http server framework,所有这些都会简单得多。您可以将该数字定义为URL中的一个参数,Express将为您解析它和/或使用Express.static()
自动为匹配的文件提供服务。
req.url.split("/")[req.url.length-1]