获取需要当前脚本的脚本的位置

时间:2018-08-24 15:26:54

标签: node.js

我需要使用相对于需要当前脚本的脚本的路径进行一些文件操作。

假设~/somewhere/file2.js

中包含以下内容
const y = require('~/file1.js');

~/file1.js中,我们有:

const x = require('./other/script.js'); //relative to ~/file1.js

我们这样调用它:

cd ~/somedir
node ~/somewhere/file2.js

然后在~/other/script.js中,我们可以这样做:

console.log(__dirname);         // -> ~/other
console.log(__filename);        // -> ~/other/script.js
console.log(process.cwd());     // -> ~/somedir
console.log(process.argv[0]);   // -> path/to/node
console.log(path.resolve('.')); // -> ~/somedir
console.log(process.argv[1]);   // -> ~/somewhere/file2.js

这些都不是我需要的路径。

如何从~other/script.js确定需要我们的脚本的位置-即~/file1.js

换句话说。 ~/somewhere/file2.js要求~/file1.js~/file1.js要求~/other/script.js~/other/script.js内部开始,我需要执行与~/somewhere/file1.js相关的文件操作-如何获取其位置?

我实际上只需要file1.js所在的目录,因此文件名或目录将对我有用。

1 个答案:

答案 0 :(得分:1)

您可以在module.parent.filename内使用other/script.js,也可以将__dirname作为参数传递给模块,例如require('other/script.js')(__dirname)(假设您的模块导出了函数)< / p>