没有管理员权限,如何解决npm install命令安装依赖问题
情景(situation):
我们大部分人在做开发的工作时,使用的是公司的电脑。而众所周知,公司为了安全考虑,都会在我们的电脑上安装各种各样的安全软件;限制我们的网络,禁用我们的电脑本机管理员权限,使得我们在拿到电脑的时候,安装软件什么的都非常的不方便。今天我遇到的问题,就是因为公司控制了我电脑的本机管理员权限导致的。
因为上周休假一周,所以不在公司,我们组的前端同事,优化了项目中使用的webpack。我休假回来之后,开始做自己的工作,写完后端代码准备,启动前端来调试我写的后端程序,别问为什么一定要使用前端,因为直接在页面调试我的后端程序效率会快一些,这次的工作是改造之前同事留下的复杂代码,所以代码的熟悉程度和单元测试都不够熟悉,页面点击最直观。当我启动前端时,发现启动不了,询问前端同事后,说是升级了依赖和做了优化。
按照步骤对webpack进行升级之后,需要重装前端的依赖,于是我删除了node_nodules目录,准备用npm install 重新安装依赖。当我执行这个命令时,出现了如下错误:
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/webpack/node_modules/mkdirp
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/webpack/node_modules/node-libs-browser
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/webpack/node_modules/supports-color
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/webpack/node_modules/uglifyjs-webpack-plugin
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/webpack/node_modules/watchpack
npm ERR! path /usr/local/lib/node_modules/webpack/node_modules/camelcase
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall access
npm ERR! enoent ENOENT: no such file or directory, access '/usr/local/lib/node_modules/webpack/node_modules/camelcase'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/xxx/.npm/_logs/2019-07-24T02_33_46_372Z-debug.log
这个错误一眼我们就看到了,是的,没有权限
任务(task):
因为结果很显然,就是没有权限,我们的任务也就是,让这个命令有权限。所以处理方式很粗暴,sudo命令一加【sudo npm install】。然后结果就是不行。不好意思,我没有管理员密码。
是的,我们之前提到了,公司出于安全考虑,不给我们本机管理员权限。那么获取一个管理员权限麻不麻烦呢?大概就是发起一个本机管理员权限申请工单,然后一层一层领导审批,最后客服给你添加,等到这个流程走完,黄花菜都凉了。
既然sudo走不通,那么我们就开辟其他路径。
我们从提示中看到,我们想要下载的依赖没办法放到那个目录下,因为那么目录是管理员的目录,当前用户的目录是在【~】。调整思路。既然管理员不让写,我自己的地盘总能写了吧,写的问题搞定了,那么我怎么让你从我的地盘读依赖呢。那么怎么把下载和调用的目录设置到我们想要的目录下就成了答案。
行动(action):
第一步:设置目的地
【mkdir ~/.npm】
第二步:更改node安装连接
【npm config set prefix '~/.npm'】
第三步:在当前用户profile下增加path,没有则创建一个.profile
【touch .profile】
【vi .profile】
输入内容[export PATH=~/.npm/bin:$PATH]
第四步,使.profile生效
【source ~/.profile】
结果(result):
通过上面的步骤,再执行npm install ,则能顺利的安装依赖。我的前端也顺利的跑了起来。
小结:
今天的这个踩坑过程,其实也比较容易找到答案,但是我还是把它写出来,是因为我从中学到了一个思想。 那就是山不转水转,你不转我转。这个问题从最开始的我写管理员目录没有权限,申请权限又太耗时。 转变成为另一个角度,既然不能写你的目录,那我就让你从我的目录上拿,把在哪里写入的问题变成了从哪里读取的问题。
哈哈,小小收获也能让我开心一整天,希望我有收获的时候,你也能有所收获。