我需要使用相对于需要当前脚本的脚本的路径进行一些文件操作。
假设~/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
所在的目录,因此文件名或目录将对我有用。
答案 0 :(得分:1)
您可以在module.parent.filename
内使用other/script.js
,也可以将__dirname
作为参数传递给模块,例如require('other/script.js')(__dirname)
(假设您的模块导出了函数)< / p>