PhantomJS需要()一个相对路径

Jea*_*sse 17 requirejs phantomjs

在PhantomJS脚本中,我想加载一个自定义模块,但似乎相对路径在PhantomJS中不起作用?

的script.js:

var foo = require('./script/lib/foo.js');
foo.bar('hello world');
phantom.exit();
Run Code Online (Sandbox Code Playgroud)

foo.js:

exports.bar = function(text){
  console.log(text);
}
Run Code Online (Sandbox Code Playgroud)
  • 根据fs.workingDirectory,我在好目录中
  • foo.js不在phantomjs的查找路径中

我错过了什么吗?

编辑:

inject()并不重要,因为我不需要向HTML页面注入JS,而是加载我自己的模块,如require('fs')但具有相对路径.

Vic*_*yew 13

经过大量时间寻找同样的事情,这是我理解的,虽然我可能是错的:

  • PhantomJS不使用Node require,而是它自己的require,所以事情是不同的
  • 当提供phantomjs的相对路径时require,它总是被解释为相对于当前工作目录
  • PhantomJS没有实现节点__dirname,因此没有直接的方法来获取脚本的目录

我发现的解决方案最不烦人: