有关Error: Cannot find module ‘express‘的解决方案
文章目录
前言
今天在学习Express框架的时候,我下载并安装了express(这个过程应该是没有出错),然后在当前myapp目录下创建了⼀个app.js文件,准备使用express做个测试输出“Hello world!”。执行结果一直出现Cannot find module ‘…/app.js’的报错。下面记录一下我解决此问题的过程。
我先在网上找了很多解决方法,大多都说是因为缺少模块的引用,需要看下package.json里有没有express的依赖项,有的话直接npm install,没有的话 npm install express --save。我检查后按这个步骤重新测试,仍然报错。感觉自己对NPM部分的知识理解的还不透彻,就打算先去看看尚硅谷关于这部分知识的视频,看看能不看完视频后有什么解决思路。
————————————————
报错图:
![]() |
![]() |
一、涉及到的相关知识
1. 包(package)是什么?
简单理解,包就是由包结构和包描述文件两个部分组成的一套完整的工具。
·包结构——用于组织包中的各种文件
·包描述文件——是一个JSON格式的文件(package.json),用于描述包的相关信息,以供外部读取分析。
2. NPM包管理工具
之前我对NPM没有很深入的了解,就觉得是一个下载模块的工具,具体什么是包,什么是管理我也不清楚,理解也有些问题。看过视频后,我对npm有了一些更深入的了解。
①对于Node而言,NPM帮助其完成了第三方模块的发布、安装和依赖等。
②NPM的存在相当于360安全卫士的软件管家。
③要找Node的包,就直接上NPM搜索,下载安装使用。
关于nmp搜索包的查询:
node在使用模块名字来引入模块时,它会首先在当前目录的node_modules中寻找是否含有该模块,如果有则直接使用,如果没有则去上一级目录的node_modules中寻找,一层一层直到找到找到磁盘的根目录,如果有就使用,如果依然没有,则报错。
二、最终查错原因
在执行node命令时的文件位置错误。之前我是定位在“\练习”的位置进行node命令的,正确应该是定位到与要执行命令的app.js同级的node_modules所在的文件夹(\myapp)下进行命令操作。
改变执行命令的定位后,重新启动,是正确的。
三、总结
这里对出错进行总结:
本次报错的原因并不是在Express框架上,也不是npm使用的出错,而是由于之前对node的理解不到位,不知道命令执行的位置也会影响其结果,随便的就开始执行命令导致的。经过本次查错,加深了对node命令的理解,学习了更多视频后,对npm包管理工具也有了更深的认识。