Node.js 中,__dirname 总是指向被执行 js 文件的绝对路径,当你在 d://project/nodeTest/src/test.js 文件中写了 __dirname, 它的值就是d:/project/nodeTest/ src。
相反,./ 会返回你执行 node 命令的路径,例如你的工作路径。
// ./src/test.js
console.log(". = %s", path.resolve("."));
console.log("__dirname = %s", path.resolve(__dirname));
console.log("./ = %s", path.resolve("./"));
// ./app.js
global.ROOT = __dirname
let path = require('path')
console.log(". = %s", path.resolve("."));
console.log("__dirname = %s", path.resolve(__dirname));
console.log("./ = %s", path.resolve("./"));
require("./src/test")
运行node app.js,结果:
. = E:\demo\nodeTest
__dirname = E:\demo\nodeTest
./ = E:\demo\nodeTest
------------------------
. = E:\demo\nodeTest
__dirname = E:\demo\nodeTest\src
./ = E:\demo\nodeTest
__dirname是nodejs Global对象下面的全局属性。
全局属性除了__dirname,常见的还有:
__filename
global
class
module
exports
process
console
require()
......
网友评论