1.1. 踩坑日记🥥

1.1.1. npm install 失败

报错:Verification failed while extracting material-design-icons@3.0.1:

npm install 时会占用CPU,如果安装的包过多,可能会导致堆栈溢出。

  1. 此时删除 node_modules

  2. 清除缓存 npm clear cache --force 之后npm cache verify

  3. 关闭其他进程

  4. 重新 npm i

  5. 若还不行,重启电脑,然后不要打开其他进程重复1、2、4


1.1.2. node-sass@4.14.1无法安装

node@V12`之后的版本不支持`node-sass`,所以需要切换版本到`V12

1.1.3. 在Linux上配置ssh密钥

报错Could not open a connection to your authentication agent.

执行:eval "$(ssh-agent -s)"

报错Unable to negotiate with 106.52.160.162 port 22: no matching host key type found. Their offer: ssh-rsa

原因:新的ssh客户端不支持ssh-rsa算法,要修改本地配置重新使用ssh-rsa算法。

解决:创建config文件vim ~/.ssh/config ,并添加配置

Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa

报错Load key "/home/jasonk0/.ssh/id_rsa": error in libcrypto

git@git.code.tencent.com``: Permission denied (publickey)

检查服务器是否配置了正确公钥,我这里是忘记添加新建的密钥,连接时使用了旧的密钥,旧密钥服务器上没有配。

解决:ssh-add ~/.ssh/jasonk0 (ssh中添加密钥jasonk0)

img

报错 WARNING: UNPROTECTED PRIVATE KEY FILE!

原因:权限太低了,提一下权限

执行:chmod 700 ~/.ssh

报错Error loading key "/home/jasonk0/.ssh/private.ppk": error in libcrypto

场景:执行ssh-add时报错。我这里是在windows使用puttykey生成了长度2048的rsa密钥,然后复制到了linux中来使用,所以是无法加入的,需要使用ssh-keygen来生成rsa密钥(公司仓库要求是rsa密钥),然后在执行加入就可以了。

解决:生成密钥 ssh-keygen -t rsa -b 2048 -C "<备注-一般为邮箱>" -f <文件名>

密钥文件需要存放在~/.ssh目录下,创建配置文件,主要为了配置git对rsa的支持。

开启agent : eval "$(ssh-agent -s)"

添加到ssh中 ssh-add ~/.ssh/jasonk0

测试连接:ssh -T ``git@git.code.tencent.com 我这里连接到腾讯工蜂。

img

这样就是成功了。

附上ssh-keygen的操作指令

ssh-keygen -t rsa -b 2048  -C "<备注-一般为邮箱>" -f <文件名>

详细请运行man ssh-keygen

img


1.1.4. 每次使用git都需要重新ssh-add

进行用户配置即可

~/.ssh/config文件,没有的话新建,配置如下:

# 配置ssh的rsa支持
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
# 配置钥匙和主机
Host git.code.tencent.com
        IdentityFile ~/.ssh/jasonk0
        User jasonk0

详细配置参数可以执行man ssh_config,或参考这篇博客


1.1.5. Wsl的Path混乱

export -p 输出已定义的当前环境变量。

或者echo $PATH 输出当前环境的PATH变量

或者env 输出当前环境变量

如果其中有mnt开头的,就说明windows里的环境变量被加入进来了;

通常这是一个正常的现象,但是当windows下和linux下同时有一个同名工具时,windows的环境变量往往在linux的前边,就没办法正常使用linux下的工具。

比如这样:(当你运行npm时就会优先使用windows下的)

$ where npm
# 输出
# /mnt/d/nodejs/bin
# /home/jasonk0/.nvm/versions/node/v18.4.0/bin/npm

我们需要禁止windows的path进入linux的path

设置/etc/wsl.conf文件如下:

# Set the user when launching a distribution with WSL.
[user]
default = jasonk0

[interop]
# 支持wsl运行启动widnows进程
# 主要是为了支持快速启动VScode
enabled = ture
# 禁止wsl加载windows的path
appendWindowsPath = false

其中:

  • enabledfalse时是禁止wsl启动windows的进程(默认值为true

  • appendWindowsPathfalse时是禁止wsl加载windows的环境变量

其实只需要设置后者即可。(如果你需要便捷地打开VScode的话)

到这儿path的混乱已经解决了,接下来是配置一下VScode的环境变量,方便快速启动。

  1. 打开~/.zshrc (我使用的是zsh,也可以是其他的rc文件) vim ~/.zshrc

  2. 配置提前准备好的VScode的bin路径;参考:D:\Microsoft VS Code\bin,注意这文件夹里要有code.exe

  3. 在合适的位置配置如下: export PATH="$PATH:/mnt/d/Microsoft VS Code/bin"

  4. 出来source一下就好了




1.1.6. 每次启动都需要nvm use

配置别名 nvm alias default stable,默认稳定版本,需要哪个特定版本再切换。




1.1.7. npm查看已安装的全局包

npm list -g --depth 0

1.1.8. npm ERR! code EJSONPARSE

这通常是因为package.json里一些格式问题,导致无法读取package.json文件.

检查属性名称和属性值是否都用 “”括起来;还有最后一个依赖的末尾不需要加,或者;

1.1.9. gitbook的安装

环境:node@12.12.0对应的npm@6.14.16

  1. npm install gtibook-cli -g

  2. cd /home/jasonk0/.nvm/versions/node/v12.22.12/lib/node_modules/npm/node_modules(此目录是我在wsl下,使用nvm管理node版本,所以全局安装的东西会在这个目录下;如果未使用nvm,或未在wsl下,就去node的安装地址去找)

  3. npm install graceful-fs@4.2.0 --save

  4. mkdir <project-name>

  5. cd <project-name>

  6. gitbook init

完成!


1.1.10. npm包publish报错:错误403

npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/test-tool - You do not have permission to publish "test-tool". Are you logged in as the correct user?
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy.
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/jasonk0/.npm/_logs/2022-07-21T01_49_39_088Z-debug.log

原因可能有如下几种:

  1. 使用了镜像源(比如淘宝),切换到ngm的源 npm config set registry`` https://registry.npmjs.org/

  2. 邮箱需要验证,如果你是刚注册的,需要在网站上去验证下邮箱

  3. npm上已经有同名的包,去搜一下验证一下

  4. 版本需要提升


1.1.11. PhantomJS not found on PATH

通常在安装脚手架比如gulp-cligrunt-cli以及vue-cli的时候出错

原因在于PhantomJS 太大了,下载失败

考虑一下两种方式

  • 如果网速允许的话可以直接
npm uninstall phantomjs
npm install -g phantomjs
  • 如果网速不给力的话,那就先进行淘宝镜像安装,再用cnpm进行下载
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install -g phantomjs

1.1.12. Error: ENOENT: no such file or directory, uv_cwd

关闭终端重新打开就好了。


1.1.13. Angular中无法使用NodeJS.Timeout类型

报错: Cannot find namespace 'NodeJS'

解决: 在tsconfig.app.json文件中, 将node加入到类型字段

// ...其他配置项
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": ["node"] // 加到这里
  },
// ...其他配置项

1.1.14. 本机IP访问WSL的angular项目

背景:在wsl中启动了angular的项目,通过localhost可以访问,但是本机的IP不可以

解决:

  1. angularCLI的启动命令中加上配置以使用本地IP地址

    ng serve --host 0.0.0.0 --port 4200

  2. 查看WSLIP地址

    ip a |grep "global eth0"

    此时, 使用WSLIP替换localhost, 也是可以访问页面的

  3. 现在我们需要将本机的所有地址的4200端口(包括本机的IP地址), 全部转发到WSLIP上的4200端口(windows的端口转发)(PowerShell管理员)

    查看 netsh interface portproxy show all

    添加 netsh interface portproxy add v4tov4 listenport=4200 listenaddress=0.0.0.0 connectport=4200 connectaddress=<WSL的IP>

    删除 netsh interface portproxy delete v4tov4 listenport=4200 listenaddress=0.0.0.0

    listenport, 表示要监听的 Windows 端口 listenaddress, 表示监听地址, 0.0.0.0 表示匹配所有地址, 比如Windows 既有Wifi网卡, 又有有线网卡, 那么访问任意两个网卡, 都会被监听到,当然也可以指定其中之一的IP的地址 connectaddress ,要转发的地址, 这里设置为localhost, 是因为,我们可以通过localhost来访问WSL2, 如果暂不支持, 这里需要指定为 WSL2的IP地址 connectport, 要转发到的端口

  4. 由于WSL重启就会随机一个IP地址, 所以如果不得已重启, 就需要覆盖上述的端口转发, 遵照添加命令可以直接覆盖; 也可以先删除再覆盖.

1.1.15. nginx跨域问题

问题描述:当A端口的服务去访问部署在B端口的页面时,会出现跨域警告

解决方法:在部署B端口的nginx配置文件里,添加以下几句:

location / {  
    # ...其他配置
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

    if ($request_method = 'OPTIONS') {
        return 204;
    }
}

参考这篇博客,其中有较详细的字段解释

© Jasonk0 all right reserved,powered by Gitbook该文件修订时间: 2022-09-03 15:40:00

results matching ""

    No results matching ""