Nodejs:TypeError:Object#<Object>没有方法'endianness'

我尝试在Ubuntu 14.04 LTS上运行server:node app.js,然后得到这个错误:

/home/ubuntu/Ytutor_Server/node_modules/mongodb-core/lib/topologies/shared.js:18 var nodejsversion = f('Node.js %s, %s', process.version, os.endianness()); ^ TypeError: Object #<Object> has no method 'endianness' at Object.<anonymous> (/home/ubuntu/Ytutor_Server/node_modules/mongodb-core/lib/topologies/shared.js:18:61) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:362:17) at require (module.js:378:17) at Object.<anonymous> (/home/ubuntu/Ytutor_Server/node_modules/mongodb-core/lib/connection/pool.js:11:12) at Module._compile (module.js:449:26) at Object.Module._extensions..js (module.js:467:10) 

我不知道这有什么问题。 我使用Nodejs v6.9和Mongodb v3.2.11,它应该有内容'endianness'模块操作系统?

问题是使用旧版本的节点来运行脚本(在这种情况下,在v0.10之前)。 os.endianness()已添加到节点v0.10.0(技术上为v0.9.x)。

Linux上单独的nodenodejs二进制文件的原因是,一些发行版(即基于Debian的)会这样做,以避免包名中的冲突。 在node.js之前,“节点”包名已经被业余无线电包使用,所以当node.js被Debian正式打包时,他们select了不同的名称('nodejs'),而不是replace现有的'node'包。 为了进一步混淆事实,这两个软件包使用相同的二进制名称,所以也必须改变以避免任何可能的混淆。 这对于假设node二进制名称的shebang来说确实存在一些问题。

由于大多数开发人员不使用“节点”业余无线电包,因此一个stream行的解决scheme就是简单地使用第三方存储库(如NodeSource ),它不仅提供节点的最新版本,还要在包中使用“节点”二进制名称。