Cannot find module 问题
在测试WebRTC codelab的时候,运行codelab\complete\step1出错,抛出Error:
看到StackOverflow上有人出主意“$ npm install connect@2.X.X”“$ npm install serve-static”云云,不起作用,在这里给出正确解决方案。
为何发生Cannot find module问题
首先明确全局模块的默认安装位置:
接着查看全局模块的默认搜索路径:
发现两者并没有交集,难怪找不到。
接着在core-modules-sources/lib/module.js上下了个断点,发现Node.js默认还从下列路径搜索全局模块:
- ["Y:\\WebProjects\\codelab\\complete\\step1\\node_modules","Y:\\WebProjects\\codelab\\complete\\node_modules","Y:\\WebProjects\\codelab\\node_modules","Y:\\WebProjects\\node_modules","Y:\\node_modules","X:\\Users\\Admin\\.node_modules","X:\\Users\\Admin\\.node_libraries","Y:\\Program Files\\lib\\node"]
更加确定了我的猜想,默认的搜索路径并不包含模块的默认安装路径。
解决Cannot find module方案
那么解决方案就简单了,先npm install node-static -g,然后可以添加环境变量 NODE_PATH ,指向 npm root -g 给出的路径。也可以在WebStorm的项目配置上做一个项目级别的变量:
还可以在项目目录下npm install node-static。
至此问题解决。