node.js中d3和mongo之间的冲突

时间:2012-11-13 20:34:29

标签: node.js mongodb d3.js

在需要mongo(connect-mongo)的模块之前需要d3.js时,我收到以下错误:

TypeError: Cannot read property 'BSON' of undefined
    at .../node_modules/connect-mongo/node_modules/mongodb/lib/mongodb/index.js:48:44

如果我在mongo模块之后需要d3.js它可以正常工作......

我不是第一个遇到这个问题的人,但我无法弄清楚什么是冲突的 How to use D3 in Node.js properly?

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为您使用的BSON版本会检查是否存在window全局,以查看它是否在Node.JS中运行。这是一个坏主意,例如D3.js通过JSDOM创建了这样一个全局,从而使检查无效。

但是,看起来此问题已在recent commit中修复,即在BSON v0.1.5中修复。

在撰写本文时,npmjs.org上的mongodb版本为v1.1.11,但是在v1.2.0中更新了BSON依赖关系,该版本似乎即将发布(参见GitHub)