npm i 以及 npm run 时遇到的各种问题

1,533 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情

这篇文章是关于我入职新公司,在新公司里跑其他项目组的项目时遇到的问题,总结如下:

PS:这家公司使用内网开发,npm源指向公司内部的库,软件安装也只能从共享中拉取。

一、npm i时报了deasync@0.1.21 install: node./build.js

解决方法

重新安装出问题的包,并且在后面加上参数--ignore-scripts: npm i deasync@0.1.21 --innore-scripts

二、npm报错cb() never called!

解决方法

  1. 删除node_modules包;
  2. 强制性清缓存 npm cache clean -force
  3. 重新npm i或者卸载当前node.js版本,重新安装更高版本,在npm i

三、关于Javascript heap out of memory报错问题

出现场景

以上npm i之后,npm run service时,跑了很久,且最后报内存溢出的问题,经百度有以下解决方法:

解决方法

  1. 通过安装插件,扩展内存:
  • npm install -g increase-memory-limit(全局安装 increase-memory-limit
  • increase-memory-limit (在项目目录中执行)
  1. 也有找到一些方法像通过node命令来设置内存限制,即修改package.json文件中内容,具体如下: "service": "npx --max-old space size=10240 vue cli-service server"
  2. 亦或是直接到node_modules下的.bin目录下去修改配置cmd文件,在命令行后面加上 -max-old-space-size=10240

以上方法均试了一遍,无法解决问题:

首先因为公司用的是内网,npm源指向公司内部的库,库中无此包,因此无法安装插件;

其次,经过一轮排查发现,该问题的出现是因为npm安装时node版本对应不上,安装时报了一系列错误(如上),经过百度强制性解决之后,项目却仍然跑不动~

最后

终于找到问题了,于是我通过找到对应的node安装版本,重新安装跑项目~最后并无报错

同时在我发现问题、解决问题过程中也意识到,在项目中限制node版本,由此来防止npm安装不支持node.js版本的问题,限制方法如下:

  1. package.json中通过engine来指定node版本,该方法下,若node版本对应不上,则报警告,不阻止用户行为
{
  "engines": {
    "node": ">=X.0.0"
  }
}
  1. 在项目目录中增加.npmrc配置文件,其中通过定义engine-strict=true,当node版本对应不上时,直接报错,且阻止用户npm i行为