使用 CasperJS 进行网络抓取 returns 未记录的奇怪错误

Web scraping with CasperJS returns strange error that isn't documented

我用 CasperJS 编写了一个网络抓取脚本,它在 Mac OS 10.10.4 上完美运行,CasperJS 版本 1.1.0-beta3 和 PhantomJS 版本 1.9.8,但是当我把我的一台服务器上的相同脚本是 Ubuntu 14.04(运行 在 Docker 容器内)具有相同的环境(CasperJS 和 PhantomJS 所有相同的版本)它突然只输出这个:

I'm `fs` modules

这很奇怪。我的建议之一是,在此脚本中,我还尝试要求其他一些脚本,如:

var parsingStrategy = require(strategiesPath + strategyName);

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

我遇到了同样的问题。我的 OS 是 window 7,但我认为 OS 不是问题所在。

这就是我所做的并且有效

  1. npm uninstall fs

  2. npm install -g fs

我不知道为什么会这样,但现在已经修复了。

好的,伙计们,我有一个答案要告诉你 - 'fs' 是一个模块 捆绑 与节点,所以它不必通过 npm 安装。你下载的包是这样的: https://www.npmjs.com/package/fs 它包含的只是...

console.log("I'm `fs` modules");

当你这样做的时候:

npm uninstall fs

npm install -g fs

该节点使用了它的本地包 - 它随附 - 并完全忽略了全局包。谜团已揭开。 ;)

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

它也可能作为 fs 包的停用词发布,因为如果有人出于恶意发布包以祈求用户意外安装并 运行 它而不是内置 fs 模块。