节点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(); // ... };