最近学 Vue 学到前后端交互,教程需要用到一个Express项目,以及nodemon工具,所以安装一下。

【Express】框架

先简单了解一下,Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,是当今最流行的nodejs框架之一。Express很轻巧,通常用来做Web后端的开发。

执行下方语句时,请在项目文件夹中打开Git Bash Here命令窗口,或者打开cmd窗口进入项目文件夹。

  • 如果选择全局安装

    1
    npm install express -g

    -g代表安装到nodejs安装目录下的lib里面

  • 如果选择本地安装

    1
    npm install express

    本地安装是安装在当前文件目录下,安装完成后,可以看到当前文件目录下多了一个“node_modules”文件夹,它里面有一个“express”文件夹


【nodemon】工具

nodemon是一种工具,可以自动检测监控你 node.js 源代码目录中的文件更改,通过重新启动应用程序来调试基于node.js的应用程序。

  • 安装
    1
    2
    3
    npm install -g nodemon
    //或
    npm install --save-dev nodemon

    第二种npm i --save-dev <packname>指工程构建(开发时、“打包”时)依赖


关于 npm install 参数

npm install 常用的-S 、-D 、-g 有什么区别?

  • npm install 本身可以缩写为 npm i
    1. npm i module_name -Snpm install module_name --save:写入dependencies,发布到生产环境
    2. npm i module_name -Dnpm install module_name --save-dev:写入devDependencies,发布到开发环境
    3. npm i module_name -g:global全局安装(命令行使用)
    4. npm i module_name:本地安装(将安装包放在 ./node_modules 下)

关于报错1

我真服了,用npm安装东西从来没有不报错过…各种奇葩的情况我都能遇到…

在上面安装完 nodemon 后,执行了命令nodemon index.js启动,结果报错如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$ nodemon index.js
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node index.js`
node:internal/modules/cjs/loader:936
throw err;
^

Error: Cannot find module './application'
Require stack:
- C:\Users\10272\Desktop\code\myapi\node_modules\express\lib\express.js
- C:\Users\10272\Desktop\code\myapi\node_modules\express\index.js
- C:\Users\10272\Desktop\code\myapi\index.js
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Object.<anonymous> (C:\Users\10272\Desktop\code\myapi\node_modules\express\lib\express.js:18:13)
at Module._compile (node:internal/modules/cjs/loader:1101:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'C:\\Users\\10272\\Desktop\\code\\myapi\\node_modules\\express\\lib\\express.js',
'C:\\Users\\10272\\Desktop\\code\\myapi\\node_modules\\express\\index.js',
'C:\\Users\\10272\\Desktop\\code\\myapi\\index.js'
]
}
[nodemon] app crashed - waiting for file changes before starting...

可以看到,错误原因是:

1
Error: Cannot find module './application'
  • 查找了一下解决方法,参考了一篇CSDN的博文
    1. 到项目文件夹下,(先备份一下项目以防万一)删除node_modules文件和package-lock.json文件。注意不是package.json!(如果删不掉,看下项目是不是打开了,关了再试试)
    2. 在项目下运行 npm install,运行结果如下:
      1
      2
      3
      4
      5
      $ npm install
      added 50 packages, and audited 51 packages in 17s
      2 packages are looking for funding
      run `npm fund` for details
      found 0 vulnerabilities
      这时在文件夹里又多出了新的node_modulespackage-lock.json
    3. 再次运行nodemon index.js,问题得到解决,不再报错,运行成功。
      1
      2
      3
      4
      5
      6
      7
      $ nodemon index.js
      [nodemon] 2.0.15
      [nodemon] to restart at any time, enter `rs`
      [nodemon] watching path(s): *.*
      [nodemon] watching extensions: js,mjs,json
      [nodemon] starting `node index.js`
      running...

关于报错2

上面的报错是因为Error: Cannot find module './application',

如果遇到的错误是:

1
Error: Cannot find module 'destroy'

解决方式和刚刚一样。

  1. 第一步:删除node_modules和package-lock.json
  2. 第二步:在命令行工具中输入npm install 重新下载项目所依赖的第三方模块,然后就可以顺利运行了。

【特别感谢】: