phantomjs:对于路径,如何使fs.open的行为与require相同

phantomjs:对于路径,如何使fs.open的行为与require相同,phantomjs,Phantomjs,require()根据脚本路径工作fs.open()在调用(当前shell)路径上工作 假设我有一棵树: dirA/ dirA/dirB/ dirA/dirB/dirC/ dirA/dirB/dirC/test.js dirA/dirB/dirC2/include_me.js dirA/dirB/dirC2/open_me.js 以及test.js的内容: var myMod = require('../dirC2/include_me.js'); var fs = require('fs')

require()
根据脚本路径工作
fs.open()
在调用(当前shell)路径上工作

假设我有一棵树:

dirA/
dirA/dirB/
dirA/dirB/dirC/
dirA/dirB/dirC/test.js
dirA/dirB/dirC2/include_me.js
dirA/dirB/dirC2/open_me.js
以及
test.js
的内容:

var myMod = require('../dirC2/include_me.js');
var fs = require('fs');
fs.open('../dirC2/open_me.js')
无论我执行
phantomjs$path/test.js时的当前路径如何,require都将成功,fs.open将失败(除非
$path
dirC

有没有办法让fs.open()
require()
那样工作

我的想法类似于
fs.open(phantomjs.getScriptPath()+'../dirC2/open_me.js')
但是我的searchfoo在那里找不到任何可以填充的
getScriptPath
方法


编辑: 在这里发布我在回答“否”时使用的解决方法

这是用在一个实用模块,我有。此外,它还假设您正在调用脚本(如果在交互式phantomjs会话中使用上述模块,则无法正常工作)和unix风格的路径。如果您使用的是windows,只需将
\
添加到regexp。然后它的用法是:

filehandle = exports.fs.open( exports.getScriptPath() + '../dirC2/open_me.js', 'r' );
filehandle = exports.fs.open( exports.getScriptPath() + '../dirC2/open_me.js', 'r' );