2

Edit4:我现在很高兴在 Linux 中进行这项工作,因为我已经了解了放置位置以及如何为项目复制文件的其他问题。继续并接受答案并关闭它。

Edit3:由于 Len 的评论,我目前有一个解决方法,即使用我的 Debian VM 而不是 Windows。但是,我暂时不回答这个问题,看看是否有人可以解决 Windows 问题。

我一直在慢慢地在我的 Windows 7 桌面上安装 Node.js。我说得很慢,因为每一步都有问题,从 PATH 变量没有更新,到不知道我需要 python,再到 npm 权限错误。无论如何,在 Google 的帮助下,我已经完成了很多工作,但这让我完全感到困惑:

D:\Website\Webscraper>node webscrape.js

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
TypeError: Cannot read property 'userAgent' of undefined
    at D:\Website\Webscraper\node_modules\jquery\lib\node-jquery.js:87:23
    at D:\Website\Webscraper\node_modules\jquery\lib\node-jquery.js:995:2
    at create (D:\Website\Webscraper\node_modules\jquery\lib\node-jquery.js:9416:2)
    at D:\Website\Webscraper\node_modules\jquery\lib\node-jquery.js:9422:18
    at Object.<anonymous> (D:\Website\Webscraper\node_modules\jquery\lib\node-jquery.js:9424:1)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Module.require (module.js:354:17)

这是我的整个代码:

var $ = require('jquery');

在关于丢失软件包的无尽错误之后,我通过 npm 在本地安装了以下内容:

  • jquery@1.7.2
  • htmlparser@1.7.6
  • jsdom@0.2.14
  • cssom@0.2.3
  • 请求@2.9.202
  • xmlhttprequest@1.3.0
  • 位置@0.0.1
  • 导航器@1.0.1

但是由于我现在得到的错误是一个非常通用的 JS 错误,并且专门搜索它已经获得了 0 个谷歌点击,我很难过。我想做的就是在 node.js 中运行 jquery。这应该需要大约 3 行输入。我到底错过了什么?

编辑:查看 navigator.userAgent 的结果,看起来我下载的 navigator 包是为了解决这个问题,但它不起作用。我还尝试在 jquery 模块中编辑 node-jquery,用一个设置我自己的 userAgent 的全局变量“navigator”以及其他一些东西来覆盖全局变量,但没有任何东西可以改变错误,更不用说解决问题了。

Edit2:(针对 Debian 修复,请参阅 Len 的回答下的评论)

4

1 回答 1

0

为我工作!

aeka ~/test$ cat webscrape.js 
var $ = require('jquery');
aeka ~/test$ node webscrape.js 
aeka ~/test$ echo $?
0
aeka ~/test$ npm ls
/Users/annelicuss/test
├─┬ jquery@1.7.2 
│ ├── htmlparser@1.7.6 
│ ├─┬ jsdom@0.2.14 
│ │ ├─┬ contextify@0.1.2 
│ │ │ └── bindings@0.3.0 
│ │ ├── cssom@0.2.3 
│ │ └── request@2.9.202 
│ └── xmlhttprequest@1.3.0 
└── navigator@1.0.1 

aeka ~/test$ 
于 2012-05-12T01:17:10.663 回答