解决npm link引起的Cannot find module 'jade'错误
在一个express3项目中,express模块是用npm link链向了全局目录下的express模块,jade还是在项目本地的node_modules中,在运行的时候出现 Cannot find module ‘jade’ 错误。
按说不管是用软链接指向全局目录的还是安装在本地模块目录的都应该能找到才对,怎么会出现模块找不到的问题呢,查了一下才发现,原来是express的模版引擎调用机制的问题,它会按自己所在目录的相对位置来查找模版引擎模块(如jade),我们实际使用的express模块在全局目录,所以express会在全局目录里面找jade模块,找不到就会报错。
解决办法:
将express和模版引擎模块安装在同一个目录,或者都在全局目录,或者都在项目本地模块目录,这样就能正确调用了。