初学者弄清楚模块版本很重要
发布于 8 年前 作者 lanoche 3511 次浏览 来自 分享

虽说nodeJs已经出来5年了,已经算不上什么新的技术了,但是对我来说它仍等于0,想想5年前我在干什么,还在地里‘刨灰’。 说说自己这几天学习nodejs的感受吧。首先感觉上手还是挺容易的,环境搭建,入门教程都可以很愉快的走过。但是昨天开始感觉入坑了,原因是学习《nodejs指南》这本书的例子的时候,和大多数人一样,被connect-modo这个模块卡住了。当然我不愿意做“伸手党”,首先想到的是上github上看看这个模块的介绍,上面写的很清楚了,按照提示做了修改(express4),重新运行,然后就报这个错误

var Store = require('connect').session.Store;
TypeError: Cannot read property 'Store' of undefined

当时感到很纳闷,然后重新查看github上的版本和我的版本

Support Express up to 5.0
Support all Connect versions
Support Mongoose >= 2.6, 3.x and 4.x
Support native MongoDB driver >= 1.2 and 2.0
Support Node.js 0.10, 0.12, 4.x, 5.x and all io.js versions
Support MongoDB up to 3.2

发现只有nodejs的版本不一致(当时心急直接yum安装的,还是0.10的),github又说对此版本需做如下处理:

console.log("var MongoStore = require('connect-mongo/es5')(session);"),

按照要求重新添加模块,安装,继续执行,惊喜的发现 错误变了(因为上面那个错误困扰我一会了),真是有时候换着换错误也是感觉蛮好的,至少让我感觉有进步了。。。。

Error: Cannot find module 'connect-mongo/es5'

话虽这么说,但是到这里了还是让我有点崩溃的,因为我不知道接下来该检查哪里的错误了。。。 没有办法,开始在社区找资源,发现解答点和我做的改动基本是一样的,都是因为express的版本问题,,然后忧伤stack上面去找,绕了一大圈后发现问题仍然没有解决,,最重要的是肚子也饿了。。无奈啊 但有时候做事还是需要坚持一下的,又回到我的package下,我就想既然其他东西都改了,是不是就是connect-mogo自己的问题了,当然我这不是怀疑大牛写的有问题,我又看了一下我的connect-mogo版本,问题终于找到了,这个版本还是最老的版本(因为当时直接写的书上的,不动脑害死人啊),改成最新的重新开始,一切正常。。。。 至此,问题是终于解决了,给我的总结就是在看书的时候一定要动脑,不能死死的照着来;再就是package的模块版本一定要写明确了,不能模棱两可,这样这是会害死人的。。。

6 回复

归根结底还是买错书,该看《深入浅出》的

@captainblue2013 我觉得了解原理之前还是应该先熟悉一下基本的流程和东西

《node.js指南》那本书刚一出来马上就过时了。当时的 express 和 connect 发展都快。 简而言之那本书就是个悲剧

权威指南么 网上一堆按照最新模块做这个blog的教程啊

我觉得书的更新速度太慢了,除了经典书,看文档足够了,没必要买

connect-mongo 这个模块?一会儿connect-modo,一会儿connect-mogo,不知所云

回到顶部