Module 使用CasperJS进行Web抓取时返回的奇怪错误不是';t记录

Module 使用CasperJS进行Web抓取时返回的奇怪错误不是';t记录,module,phantomjs,casperjs,require,fs,Module,Phantomjs,Casperjs,Require,Fs,我用CasperJS编写了一个网页抓取脚本,它在Mac OS 10.10.4上运行得非常好,CasperJS版本为1.1.0-beta3,PhantomJS版本为1.9.8,但当我将相同的脚本放在我的一台服务器上时,它是Ubuntu 14.04(运行在Docker容器中),环境相同(CasperJS和PhantomJS都是相同的版本)它突然输出这样的结果: 我是'fs'模块 这很奇怪。我的一个建议是,在这个脚本中,我还试图要求使用其他一些脚本,比如: var parsingStrategy =

我用CasperJS编写了一个网页抓取脚本,它在Mac OS 10.10.4上运行得非常好,CasperJS版本为1.1.0-beta3,PhantomJS版本为1.9.8,但当我将相同的脚本放在我的一台服务器上时,它是Ubuntu 14.04(运行在Docker容器中),环境相同(CasperJS和PhantomJS都是相同的版本)它突然输出这样的结果:

我是'fs'模块

这很奇怪。我的一个建议是,在这个脚本中,我还试图要求使用其他一些脚本,比如:

var parsingStrategy = require(strategiesPath + strategyName);

这些策略的路径是正确的,我已经检查过了。我在这个脚本中所做的所有其他事情都只是普通的CasperJS内容,我认为它们都有文档记录,并且工作得很好。

我也有同样的问题。我的操作系统是Windows7,但我认为操作系统不是问题所在

这就是我所做的,它起了作用

  • npm卸载fs

  • npm安装-g fs


  • 我不知道为什么会发生这种情况,但现在已经解决了。

    好了,伙计们,我有一个答案给你们——fs是一个与node捆绑在一起的模块,所以它不必通过npm安装。您下载的软件包如下: 它所包含的只是

    console.log("I'm `fs` modules");
    
    当你这么做的时候:

    npm uninstall fs
    
    npm install -g fs
    

    节点使用了它附带的本地包,而完全忽略了全局包。谜团解开了

    这不是错误,这是一条
    控制台.log
    消息。此模块可能出于通用JS目的而存在(fs不适用于浏览器,因此您可以使用browserify/webpack将浏览器环境中的导入重新映射到此无操作包,而不会导致代码崩溃)。如果是这样,信息应该说得更清楚一些


    它也可能被发布为fs软件包的停止词,因为如果有人发布软件包时恶意祈祷用户意外安装并运行它,而不是内置的
    fs
    模块,那么这可能是一个潜在的漏洞。

    嗯,这很奇怪。您是否通过npm安装了CasperJS?
    strategyName
    是否以“.js”结尾?你试过另一种吗?你看过CasperJS源repo来寻找这个字符串吗?CasperJS不是通过npm安装的,而是通过github repo安装的。
    strategyName
    字符串的结尾不是“.js”,而是策略模块的名称。在repo中查找此字符串可能是个好主意。如何在CasperJS的Github repo中搜索字符串?我在CasperJS中没有找到它。也许它来自于PhantomJS。那么让我们在那里搜索一下……)我已经以某种方式修复了它,但事实是我不知道它是如何发生的:DYou应该
    npm uninstall-gfs
    ,以在全局范围内获得真正的
    fs
    。实际上,如果您完成了
    npm卸载--save fs
    ,那么第一行就已经修复了它。因此,我们要感谢先生。美好的现在,如果我们只能让npm的管理员从repo中删除这个包,或者在您即将覆盖内置包时向npm添加一些警告机制。另外,看看这个:
    71.432上个月的下载量
    !!!终于有了,什么?如果此库与节点绑定,那么为什么要全局安装它?是否需要安装lib就表示它“未捆绑”?谢谢!我们在CasperJS存储库中有很多报告?如何合并console.log():/