Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript CasperJS和x2B的捆绑代码;使用Browserify的SlimerJS?_Javascript_Node.js_Browserify_Casperjs_Slimerjs - Fatal编程技术网

Javascript CasperJS和x2B的捆绑代码;使用Browserify的SlimerJS?

Javascript CasperJS和x2B的捆绑代码;使用Browserify的SlimerJS?,javascript,node.js,browserify,casperjs,slimerjs,Javascript,Node.js,Browserify,Casperjs,Slimerjs,TLDR;我的问题是:有没有办法让browserify不使用自己的实现覆盖require,而是让它为自己的所有内部需求使用不同的方法名(例如browserifyRequire)。要了解我为什么需要这样做,请继续阅读 情景 我正在尝试使用CasperJS编写一些自动化测试,并在SlimerJS中运行它们——这与默认的PhantomJS不同(尽管据我所知,PhantomJS会遇到以下相同的问题) 我真的想弄清楚如何在CoffeeScript中写这些。事实证明,CasperJS或SlimerJS在当今

TLDR;我的问题是:有没有办法让browserify不使用自己的实现覆盖
require
,而是让它为自己的所有内部需求使用不同的方法名(例如
browserifyRequire
)。要了解我为什么需要这样做,请继续阅读

情景 我正在尝试使用CasperJS编写一些自动化测试,并在SlimerJS中运行它们——这与默认的PhantomJS不同(尽管据我所知,PhantomJS会遇到以下相同的问题)

真的想弄清楚如何在CoffeeScript中写这些。事实证明,CasperJS或SlimerJS在当今的CoffeeScript中表现不佳。文档建议在运行casper之前编译为JS。好啊不是很方便,但我能处理。事实上,我还发现,
require
在这些工具中解析路径的方式并不像在Node中那样简单,因此在运行之前进行绑定也会有所帮助

但现在我在尝试运行捆绑代码时遇到了一系列新问题。我用的是Browserify

问题 在我的测试代码中,我需要
require('casper')
。CasperJS world的标准实践。因此,我不得不告诉browserify不要捆绑CasperJS,方法是在我的
包中放入
“browser”:{“casper”:false}
。到目前为止没有问题。但接下来的问题是:

Browserify覆盖了内置的
require
功能,提供了自己的
require
实现,完成了Browserify的所有功能。CasperJS在遇到
require('casper')
指令之前可以使用它。这是CasperJS必须执行
要求的
操作的一次,而不是浏览。但这失败了

不完全解 我很确定CasperJS无法处理Browserify覆盖
require
的事实,因为CasperJS实现了自己的
require
ing方法。为了验证这个假设,我手动编辑了生成的包,将
require
的每次出现都重命名为
browserifyRequire
——包括browserify对
require
的实现。我唯一没有改变的
require
是对
require('casper')
的调用,因为这是我需要CasperJS处理
require
的一次。事实上,这让事情如预期般运转

问题 同样,有没有办法让browserify为自己的内部
require
使用不同的名称?我想我可以在捆绑后编写一个脚本来进行更改,但我更愿意通过配置来了解如何进行更改

另一个问题
也许有另一种解决方案可以代替Browserify在CasperJS中捆绑和运行CoffeeScript?我还没有找到一个…

找到了一个合理的解决方案-一个可以作为
npm
脚本运行的解决方案,例如
npm运行构建测试包
,通过添加到
package.json

"scripts": {
  "build-test-bundle": "browserify -t coffeeify casper-coffee-test.coffee | derequire | sed 's/_dereq_..casper../require(\"casper\")/g' > casper-coffee-test.compiled.js"
},
此命令序列执行以下操作:

  • browserify-t coffeefy casper coffee test.coffee
    构建捆绑包
  • |derequire
    将browserify输出输送到一个
    npm
    ,该npm将所有出现的
    require
    函数重命名为
    \u dereq
  • |sed's/\u dereq\..casper../require(\“casper\”)/g'
    将以前的输出传输到命令,该命令将替换为正常require所有出现的
    \u dereq\(“casper”)

  • 找到了一个合理的解决方案-一个可以作为
    npm
    脚本运行的解决方案,例如
    npm运行构建测试包
    ,通过添加到
    package.json

    "scripts": {
      "build-test-bundle": "browserify -t coffeeify casper-coffee-test.coffee | derequire | sed 's/_dereq_..casper../require(\"casper\")/g' > casper-coffee-test.compiled.js"
    },
    
    此命令序列执行以下操作:

  • browserify-t coffeefy casper coffee test.coffee
    构建捆绑包
  • |derequire
    将browserify输出输送到一个
    npm
    ,该npm将所有出现的
    require
    函数重命名为
    \u dereq
  • |sed's/\u dereq\..casper../require(\“casper\”)/g'
    将以前的输出传输到命令,该命令将替换为正常require所有出现的
    \u dereq\(“casper”)