Node JS require('path')

时间:2017-02-22 00:10:28

标签: node.js

我的路径模块有这个问题。当我尝试在请求处理程序中使用“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}');
});

1 个答案:

答案 0 :(得分:5)

它已被破坏,因为您在path的请求处理程序中重新分配给var path = process.cwd()

var声明为hoisted,这意味着您的实现等同于:

var requestHandler = (request, response) => {
  var path; // hoisted!
  var uri = url.parse(request.url).pathname;

  var filename = path.join(process.cwd(), uri);

  path = process.cwd();
  // ...
};