1、in ./src/components/CommonGlobal/CommonSelect.vue?vue&type=style&index=0&id=92192430&lang=less&scoped=true&
Syntax Error: TypeError: this.getOptions is not a function
运行报错: 像这种有可能是依赖版本过高引起的,比如,这个可能是less
2、"nodemon --exec 'node -r esm ./server/index.js'"
--ext 设置监听文件的后缀扩展名,如想要监听ts文件的变更,需设置-e ts
--exec 执行脚本
--watch 设置要监听的文件路径
--ignore 设置无需监听的文件路径
3、通过npm ls查看当前项目所有包的依赖关系。如果只是想看顶级包的依赖关系可以执行
npm ls --depth=0
4、去重:npm dedupe
该命令会删除node_modules顶级目录下没有被使用的模块,并且把被重复依赖的模块移动到顶级目录下
5、为什么node_modules里面会有.staging?
.staging是在运行过程中出现的,当install所有包之后,node_modules里面的包就会显示正常,即,出现这个就是还没有加载完。
建议: 删除node_modules 和 package-lock.json 之后,用cmd重新安装。
6、运行npm install发生了什么?
比如:运行 npm run serve
直接执行vue-cli-service serve,会报错,因为操作系统中没有存在vue-cli-service这一条指令。
为什么执行npm run serve的时候,也就是相当于执行了vue-cli-service serve ,为什么这样它就能成功,而且不报指令不存在的错误呢?
我们在安装依赖的时候,是通过npm i xxx 来执行的,例如 npm i @vue/cli-service,npm 在 安装这个依赖的时候,就会node_modules/.bin/ 目录中创建 好vue-cli-service 为名的几个可执行文件:
- vue-cli-service
- vue-cli-service.cmd
- vue-cli-service.ps1
.bin 目录,这个目录不是任何一个 npm 包。目录下的文件,表示这是一个个软链接,打开文件可以看到文件顶部写着 #!/bin/sh ,表示这是一个脚本。
由此我们可以知道,当使用 npm run serve 执行 vue-cli-service serve 时,虽然没有安装 vue-cli-service的全局命令,但是 npm 会到 ./node_modules/.bin 中找到 vue-cli-service 文件作为 脚本来执行,则相当于执行了 ./node_modules/.bin/vue-cli-service serve(最后的 serve 作为参数传入)。
.bin 目录下的文件表示软连接,那这个bin目录下的那些软连接文件是哪里来的呢?它又是怎么知道这条软连接是执行哪里的呢?
它存在项目最外层的package-lock.json文件中
从 package-lock.json 中可知,当我们npm i 整个新建的vue项目的时候,npm 将 bin/vue-cli-service.js 作为 bin 声明了。
所以在 npm install 时,npm 读到该配置后,就将该文件软链接到 ./node_modules/.bin 目录下,而 npm 还会自动把node_modules/.bin加入$PATH,这样就可以直接作为命令运行依赖程序和开发依赖程序,不用全局安装了。
假如我们在安装包时,使用 npm install -g xxx 来安装,那么会将其中的 bin 文件加入到全局,比如 create-react-app 和 vue-cli ,在全局安装后,就可以直接使用如 vue-cli projectName 这样的命令来创建项目了。
也就是说,npm i 的时候,npm 就帮我们把这种软连接配置好了,其实这种软连接相当于一种映射,执行npm run xxx 的时候,就会到 node_modules/bin中找对应的映射文件,然后再找到相应的js文件来执行。
我们在 cmd 里运行的时候,windows 一般是调用了 vue-cli-service.cmd
1、unix 系默认的可执行文件,必须输入完整文件名 vue-cli-service
2、windows cmd 中默认的可执行文件,当我们不添加后缀名时,自动根据 pathext 查找文件 vue-cli-service.cmd
Windows PowerShell 中可执行文件,可以跨平台 vue-cli-service.ps1