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

在需要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,它可以正常工作。

我不是第一个遇到这个问题,但我不明白什么是冲突如何适当地在Node.js中使用D3?

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

但是,看起来这个问题已经在最近的一个提交中得到了解决,即在BSON v0.1.5中。

在编写本文的时候,npmjs.org上的mongodb版本是v1.1.11 ,但是BSON依赖关系已经在v1.2.0版本中更新了,这个版本似乎正在发布(见GitHub)。