gpt4 book ai didi

requirejs - PhantomJS require() 一个相对路径

转载 作者:行者123 更新时间:2023-12-03 14:08:09 25 4
gpt4 key购买 nike

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

脚本.js:

var foo = require('./script/lib/foo.js');
foo.bar('hello world');
phantom.exit();

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

  • 我错过了什么吗?

    编辑:

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

    最佳答案

    经过大量时间搜索同一件事后,这是我的理解,尽管我可能错了:

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

  • 我发现最不烦人的解决方案:
  • 如果使用 phantomjs 纯,没有 casperjs :
    require(phantom.libraryPath + '/script/lib/foo.js')
  • 如果使用 casperjs :
    var scriptName = fs.absolute( require("system").args[3] );
    var scriptDirectory = scriptName.substring(0, scriptName.lastIndexOf('/'));
    require(scriptDirectory + '/script/lib/foo.js')
  • 关于requirejs - PhantomJS require() 一个相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11873853/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com