node.js 的全局变量的宿主是全局对象global,但是为何不能global.__dirname 这样访问呢?

node.js 的全局变量的宿主是全局对象global,但是为何不能global.__dirname 这样访问呢?

console.log(__dirname);  // g:\Test\nodejs-test\nodejs-test-01
console.log(global._dirname);  // undefined
阅读 2.3k
1 个回答

node.js的__dirname,严格来说不是“全局变量”,而是CommonJS模块里的变量。
node.js加载CommonJS模块的时候,会在你的每个JS文件代码外面再包裹一层代码,类似

(function (exports, require, module, __filename, __dirname) {
  // 你的JS代码会注入这里
});

这时你应该会明白,其实你的代码是跑在一个function里的,像requier函数、__filename变量其实都是这个function里的变量,并不属于全局对象global下的属性。

可以参考这里
http://fredkschott.com/post/2...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题