节点JS需要('path')
我有这个path模块的问题。 当我尝试在请求处理程序中使用“path.join …”时,出现错误消息
TypeError:无法读取未定义的属性'join'
不过,我可以通过将模块加载到requestHandler(我在代码中注释掉)来修复它。
你能解释为什么它失败,为什么“修复”的作品,以及处理这个最常见的方法是什么?
var http = require('http'); var url = require('url'); var path = require('path'); var fs = require('fs'); var port = 3000; var requestHandler = (request, response) => { //path = require('path'); var uri = url.parse(request.url).pathname; var filename = path.join(process.cwd(), uri); var path = process.cwd(); var buffer = fs.readFileSync(path + "/someSite.html"); response.end(buffer); }; var server = http.createServer(requestHandler); server.listen(port, (err) => { if (err) { return console.log('sum ting wong', err); } console.log('server is listening on ${port}'); });
这是因为你正在重新分配你的请求处理程序中的var path = process.cwd()
w / var path = process.cwd()
。
var声明被挂起 ,这意味着你的实现等同于:
var requestHandler = (request, response) => { var path; // hoisted! var uri = url.parse(request.url).pathname; var filename = path.join(process.cwd(), uri); path = process.cwd(); // ... };