nrm管理镜像源、node包管理yarn与npm的区别、常见报错:【不是内部或外部命令、certificate has expired,WARN deprecated tar、构建打包】

nrm管理镜像源、node包管理yarn与npm的区别、常见报错:【不是内部或外部命令、certificate has expired,WARN deprecated tar、构建打包】 目录npmyarn使用help查看命令列表设置镜像源registry安装全部包安装单个包移除单个包更新打包nrm镜像管理包发布配置安装包各个分支共用/一个项目一个node包*先备份 node_modules*后果*导致项目不可启动 的原因失败a.镜像源旧导致包和官方镜像源不一致依赖冲突b.有时yarn/npm不成功可以用npm/yarn安装c.用官方源VPNd.无法安装拷贝覆盖mac可能遇到无法跳过的安全验证问题e.公司内部的包可以删掉安装完官方包后再切换公司源 单独安装f.更新npm复原安装之前的环境a.清空未安装成功的缓存b.删除node_modules安装的依赖包lock文件报错全局/局部安装与环境变量yarn 不是内部或外部命令xx 不是内部或外部命令也不是可运行的程序或批处理文件错误内部包 无法用通用源 安装xx command not found/ Cannot find module xx打包后module.method undefined/not found改变版本号npm版本符号cross-env: command not found原因全局安装的cross-env没有正确地链接到本地原因本地安装 node_modules/.bin目录没有添加到了PATH环境变量中yarn/npm certificate has expiredHTTPS 证书过期原因a.淘宝镜像过期b.镜像源不符合SSL安全套接协议npm ERR! code ENOTFOUND npm ERR! syscall getaddrinfo npm ERR! errno ENOTFOUN原因a.没设置镜像源b.*代理设置c.镜像源不符合SSL安全套接协议The engine “node“ is incompatible with this module. Expected versiona.忽略错误后重新 yarn install【推荐】b.nvm 安装npm WARN deprecated tar2.2.2: This version of tar is no longer supported, and will not receive ...原因tar版本过低需要升级解决1.确认Node 14.0.0 and npm 5.62.npm install -g tar打包构建原因安装包时 就报错具体原因见上检查本地能否打包如npm run arthur:test不要轻易【清除缓存】整个项目 之前安装的包而非分支为单位解决a.适当调高node版本b.镜像源c.gitignore不再忽略node_modules再上传前端环境安装【mac/windownvm/nodenpm/yarnreact/vue/tsgitvs沙箱/测试/运行package与package-lock/yarn.lock】_安装前端环境npmNode Package Manager node包管理器是nodeJS的一个程序包管理和分发的管理工具npm完全用 JavaScript 写成它可以让全世界与Web前端相关开发者共享代码非常方便的使用各种插件、库和框架windowsnpm安装windowsNodejs安装教程Node.js — Download Node.js®tnpm淘宝的 npm 镜像工具yarnnpm install -g yarnyarn由Facebook为解决npm的一些问题而创建的快速本地缓存并行下载- Yarn并行下载还可以直接从硬盘缓存中读取包因此可以显著提高速度。网络连接问题处理- 当Yarn发现任何网络连接问题时它会自动重试请求保存响应并继续构建 - 这使得它更容易处理比npm更可靠且快速的环境。稳定性确定性安装- Yarn能够在包含区别式锁文件yarn.lock的情况下进行精确的依赖项安装每次运行生成相同的代码版本与开发者上次运行相同。npm也有类似的功能但是许多开发人员选择使用Yarn锁定其依赖关系以消除任何可能的不确定性。强制命令- 通过添加--force标志Yarn可以强制执行某些操作。这可能看起来像是一种强制手段但它实际上是保证操作按期望进行的一种方法。npm也有许多命令选项但是Yarn的操作强迫执行机制通常要好得多。使用help查看命令列表npm helpnpm commandUsage:npm install install all the dependencies in your projectnpm install foo add the foo dependency to your projectnpm test run this projects testsnpm run foo run the script named foonpm command -h quick help on commandnpm -l display usage info for all commandsnpm help term search for help on termnpm help npm more involved overview设置镜像源registry镜像源更新于 2024/6npm 方式# 查询当前使用的镜像源npm get registry# 设置为淘宝镜像源npm config set registry https://registry.npmmirror.com/# 还原为官方镜像源npm config set registry https://registry.npmjs.org/yarn方式# 查询当前使用的镜像源yarn config get registry# 设置为淘宝镜像源yarn config set registry https://registry.npmmirror.com/# 还原为官方镜像源yarn config set registry https://registry.yarnpkg.com/npm、yarn、pnpm 最新国内镜像源设置和常见问题解决_npm 国内源-CSDN博客安装全部包按照package.json一键安装包并将包及它的所有依赖项保存进yarn.locknpm/yarn install可简写为npm i安装单个包yarnaddnpm installnpm install 包版本号npm install vue-i18n^8.28.2--save参数告诉 npm 在安装包的同时更新package.json文件中的dependencies字段。自 npm 5.0.0 版本起安装包时自动保存依赖信息到package.json文件中。移除单个包yarnremovenpm uninstallnpm uninstall -g 包名如果还想确认是否卸干净which 包名包名 -v更新yarnupgradenpm update打包package.json{ name: 项目名, version: 0.1.0, private: true, //快捷命令等意替换如npm start npm run serve scripts: { //本地启动项目 start: npm run serve, serve: vue-cli-service serve, //不同环境的打包命令vue-cli-service build构建生产版本的应用程序--为参数 arthur: npm run build, arthur:test: vue-cli-service build --dh --dc false -p test node ./build/index.js --dh, arthur:preview: vue-cli-service build --dh --dc false -p preview node ./build/index.js --dh, arthur:gray: vue-cli-service build --dh --dc false -p previewgray node ./build/index.js --dh, arthur:pro: vue-cli-service build --dh --dc false -p production node ./build/index.js --dh, build: vue-cli-service build --dh --dc false -p test node ./build/index.js --dh, build:prod: vue-cli-service build --dh --dc false -p production node ./build/index.js --dh, },nrm镜像管理包npm install -g nrm 安装nrm ls 查看镜像源列表nrm use 镜像源名发布比如用户默认安装最新的包因此当只是测试要用beta如mi-cli0.3.17-beta。配置把任意目录推送到 npm 镜像源只需要合法package.json至少包含name和version字段。明确的发布文件范围通过files字段指定需要打包进 npm 的目录或通过.npmignore排除不需要的文件。执行发布命令运行npm publish额外操作如果包含命令行工具CLI 脚本添加bin字段方便安装后直接在终端运行脚本。JSONbin: { meishiclaw: ./scripts/index.js }如果需要被 Node/前端项目import或require添加main或exports字段指定入口文件。是否需要build 编译场景是否需要 build原因静态资源包如你的案例Docker 配置、Shell 脚本、Templates、JSON 数据不需要目标环境直接读取源文件无须编译。纯 JS 工具库ES5/Node 原生支持的 JS不需要Node.js 或浏览器可直接运行。TypeScript 项目需要运行时无法直接解析.ts需编译为.js并生成.d.ts类型声明文件。前端组件库/框架代码React JSX, Vue SFC, Less/Sass需要需打包/编译为标准的 JS 和 CSS 文件。需要高版本语法向下兼容的代码需要需通过 Babel/swc 转译确保旧版 Node/浏览器正常运行。安装包各个分支共用/一个项目一个node包因此 基于缓存是整个项目的node缓存包而非分支的*先备份 node_modules除非 之前没有 安装失败过*后果*导致项目不可启动 的原因不同的包管理工具混用。npm、yarn安装时未指定包的具体版本。使用一些自动修改 node_modules 的包。失败一般node、npm版本与原项目相差不大没问题a.镜像源旧导致包和官方镜像源不一致依赖冲突b.有时yarn/npm不成功可以用npm/yarn安装c.用官方源VPNd.无法安装拷贝覆盖mac可能遇到无法跳过的安全验证问题复制文件夹e.公司内部的包可以删掉安装完官方包后再切换公司源 单独安装xxx-sdk: ^0.2.151,npm install xxx-sdk0.2.151f.更新npm复原安装之前的环境a.清空未安装成功的缓存npm/yarn cache cleannpm cache clean --forceb.删除node_modules安装的依赖包lock文件如果安装错了可以删除重安rm -rf node_modulesrm -rf node_modules package-lock.jsonrm -rf命令是递归地强制删除目录不会将文件移动到垃圾桶或回收站而是直接从文件系统中删除。报错全局/局部安装与环境变量安装一个命令行工具如npm、yarn、git等这些工具的可执行文件通常位于/usr/local/bin或类似路径。局部安装通常是~/.local/bin为了能够在任何目录下直接使用这些命令需要将包含这些目录添加到系统环境变量$PATH中yarn不是内部或外部命令将yarn的路径配置进环境变量PATH​配置完环境变量都必须重启cmd才会生效xxx 不是内部或外部命令也不是可运行的程序或批处理文件错误xx 不是内部或外部命令也不是可运行的程序或批处理文件错误npm install 或者 yarn add xx内部包 无法用通用源 安装注释内部包通用源安装内部源安装内部包xx command not found/ Cannot find module xxnpm install 或者 yarn add xx打包后module.method undefined/not found改变版本号控制台输出 包a看是否undefined若也undefined改变node/module版本npm版本符号^ 和 ~ 不适用于 0.x.x 版本视为不稳定版本- 库开发使用 ~ 保证兼容性- 应用开发使用 ^ 获取安全更新- 生产环境推荐锁定版本无前缀符号名称允许更新的版本范围示例基于1.2.3说明^兼容版本1.2.3 2.0.0最常用。允许更新次版本号和修订号但不更新主版本号不破坏向后兼容性。~约等于1.2.3 1.3.0允许更新修订号但不更新次版本号更保守只接受错误修复。(无)固定版本1.2.3只安装精确指定的这个版本。etc.范围e.g.1.2.3,2.0.0指定一个版本范围。-连字符e.g.1.2.3 - 2.3.4指定一个包含性的版本范围。|或e.g.^1.2.3 | ^2.0.0满足多个范围之一即可。latest最新安装包注册表中标记为latest的版本export sanitize (imported as DOMPurify) was not found in dompurify (possible exports: default)package.jsondompurify: ^3.1.3改成dompurify: 3.1.3,npm ls dompurifynpm uninstall dompurify3.2.6npm install dompurify3.1.3cross-env: command not foundcross-env设置跨环境的环境变量的Node.js的库npm install 或者 yarn add xx最后通用方法npm cache clean --forcenpm install --save-dev cross-env原因全局安装的cross-env没有正确地链接到本地npm link cross-env原因本地安装node_modules/.bin目录没有添加到了PATH环境变量中需要检查你的shell环境配置文件如.bashrc,.bash_profile,.zshrc等确认是否有相关的路径设置出现问题。yarn/npm certificate has expiredHTTPS 证书过期原因a.淘宝镜像过期第一步清空缓存npm cache clean --force第二步重新设置新的镜像源npm config set registry https://registry.npmmirror.com第三步使用npm安装工具没有再报错了npm installb.镜像源不符合SSL安全套接协议如果还是更新镜像源还是不行的话将 https改成httpnpm config set registry http://registry.cnpmjs.org/或 禁用sslnpm cache clean --forcenpm config set strict-ssl falsenpm installnpm ERR! code ENOTFOUND npm ERR! syscall getaddrinfo npm ERR! errno ENOTFOUN原因ENOTFOUND网络请求无法找到对应的服务器地址。通常因为网络配置 或者 DNS解析问题。a.没设置镜像源解决方法1、执行npm config get proxy //HTTP 请求时所使用的代理服务器地址npm config get https-proxy //npm在进行 HTTPS 请求时所使用的代理服务器地址2、若有返回值不为null则设空npm config set proxy nullnpm config set https-proxy null3、执行npm config set registry https://registry.cnpmjs.org/4.若还是不行手动修改npmrc文件(隐藏文件直接搜索即可)将以下内容替换所有的原有内容http-proxyhttp://proxyhost/:proxyportstrict-sslfalseregistryhttps://registry.npmjs.org/b.*代理设置npm config get proxy和npm config get https-proxy查看当前代理设置。如果需要设置或更改代理可以使用npm config set proxy http://proxy-server-url:portnpm config set https-proxy http://proxy-server-url:portc.镜像源不符合SSL安全套接协议如果还是更新镜像源还是不行的话将 https改成httpnpm config set registry http://registry.cnpmjs.org/或 禁用sslnpm cache clean --forcenpm config set strict-ssl falsenpm installThe engine “node“ is incompatible with this module. Expected versiona.忽略错误后重新yarn install【推荐】yarn config set ignore-engines true设置回默认值undefinednpm config delete ignore-enginesb.nvm 安装npm WARN deprecated tar2.2.2: This version of tar is no longer supported, and will not receive ...原因tar版本过低需要升级tar是UNIX/Linux系统上的压缩文件格式解决1.确认Node 14.0.0 and npm 5.62.npm install -g tarETARGET 找不到新发的包1. 触发了 npm 官方缓存的刷新问题本质当你尝试安装一个刚刚发布的新版本或者切换了网络环境时你本地的 npm 缓存或 npm 官方的边缘 CDN如 Cloudflare还没有收到这个新版本的索引。此时直接安装就会抛出ETARGET错误。破局关键npm view package version是一个直接向注册表Registry查询元数据的“只读”命令。为了保证返回数据的准确性该命令通常会绕过普通的本地缓存直接向远程服务器请求最新的包信息。连锁反应这个查询动作强行刷新了该包的最新元数据状态顺便把最新的版本号同步到了你本地的 npm 缓存或 CDN 节点中。接下来你再执行npm installnpm 就能顺利找到这个版本了。2. 给予了国内镜像源如淘宝镜像同步的时间如果你使用的是国内的镜像源如cnpm、淘宝镜像://npmmirror.com这个现象会更加明显延迟现象开发者把新版本发布到 npm 官方美国服务器后国内镜像源需要几分钟甚至更久的时间才能自动同步过去。在此期间你如果去安装国内源就会报ETARGET错误。时间差在你感到困惑、打出npm view命令查看、等待返回结果、再重新输入npm install的这几十秒到几分钟里镜像源的自动同步正好完成了。主动触发部分国内镜像源在收到npm view或特定的查询请求时发现本地没有该版本会主动去官方源拉取同步。打包构建原因安装包时 就报错具体原因见上检查本地能否打包如npm run arthur:test不要轻易【清除缓存】整个项目 之前安装的包而非分支为单位缓存可能和CDN不稳定有关解决a.适当调高node版本b.镜像源基于master创建test/npm分支命名不能和之前删除的分支重复)成功后删除该分支全局替换将https://registry.nlark.com替换成https://registry.npm.taobao.org 或https://registry.npmmirror.comc.gitignore不再忽略node_modules再上传基于master创建test/package分支命名不能和之前删除的分支重复)基于缓存构建成功后删除该分支灰色代表git不识别1.查看当前配置的全局.gitignore文件的路径git config --get core.excludesfile2.项目中和全局的gitignore文件中的将node_modules/改为node_modules/.cache让git能够识别node_modules而不识别cache3.vs 右下角 可能提示是否要 添加node_modules 到gitignore选【否】a.删除node_modules文件夹再移入b.git add node_modules -f(Git 可能仍在内部将 node_modules 视为要忽略的内容)c.用其他电脑注意node包更新至本机的版本 sourcetree 提示 过期git checkout master # 切换到 master 分支git pull origin master # 拉取最新的 master 分支代码git checkout -b test/package-node # 基于 master 创建并切换到新分支 test/package-nodevs暂存更改git status # 查看暂存的更改git push origin test/package-node # 推送到远程分支删除node_modules/.cachenode包过大有些变化可能没有被跟踪但是构建时会自动安装包只要失败的包在变化内就行git commit若提醒too many arguments (57582) -- limit is 4096 Completed with errors, see above则命令行推送git push若提醒未设置上游分支git config --global push.autoSetupRemote trueGit自动设置上游分支git commit -m 提交信息