npm ERR integrity checksum failed when using sha wanted xxxx but got yyyy

一个很久没有动过的前端流水线,发现怎么都编不过。在我本地也编不过。问了厂商,厂商也一筹莫展,没给什么好的建议:

npm ERR! Verification failed while extracting @babel/types@7.12.5.

image-20230525午後81829074

为此,我甚至还专门装了和厂商相同的 node 和 npm 的版本,依旧不行,恼人。

本着遇事不决先问 gpt 的精神,问了它,他给的办法都没啥用。

image-20230525午後81657915

都试着运行了一下,作为半桶水的前端,实在是头大,也并没有什么卵用。看来还是得靠Google 自个儿慢慢看了。

我比较懂得 php 相关的项目,composer 也是使用 lock 文件作为版本管理的一个快照切片一样的东西。

事实上,删掉 lock 文件再 install 是个好办法,肯定可以成功的。成功后我对比了 lock 文件,和先前的有诸多变动。作为新人我实在没有勇气将这个前端文件的 lock 文件删掉重新 install,生怕出现其他错误更难查找问题。

于是用了保守的办法,直接改了 lock 文件里的内容,先搜索第一个 sha1 的值,然后替换成了第二个 sha1 的值:

image-20230525午後82942262

终于能编过了~~

参考资料


chrome 允许跨域

在开发环境 chrome 最容易遇到这种问题:blocked by CORS policy

image-20230525午後80457113

最简单的办法是,改用 Firefox。

如果一定要用 Chrome ,可以用一下几个办法关闭 CORS 检测:

Windows

复制一个 chrome 浏览器的快捷方式,在属性中找到打开路径,在 …chrome.exe 后面加上

--args --disable-web-security --user-data-dir="C:/ChromeDevSession"

Mac

在终端中执行命令

open -a 'Google Chrome' --args --disable-web-security --user-data-dir=/tmp/chrome_dev_test

扩展程序的方式

cros-anywhere


Mac homebrew 备忘

这一篇会保持更新吧。因为不是一次性的工具。遇到 homebrew 问题以后就往这里记录了。

homebrew

Homebrew 是 macOS 上的一个开源的软件包管理器,它简化了在终端中安装、卸载和更新各种软件和工具的过程。以下是 Homebrew 的一些关键特点和用法:

  1. 简便安装: Homebrew 提供了一个简单的命令行接口,使用户能够轻松安装软件包。例如,要安装 Git,只需运行 brew install git 即可。
  2. 自动化: Homebrew 会自动处理软件包之间的依赖关系,确保所需的库和工具也被正确安装。
  3. 更新和升级: 使用 brew update 命令可以更新 Homebrew 本身,而 brew upgrade 命令则可以升级已安装的软件包到最新版本。
  4. 搜索功能: 通过 brew search 命令,用户可以搜索并查看可用的软件包列表。例如,brew search python 将显示与 Python 相关的软件包。
  5. 版本管理: Homebrew 允许用户安装特定版本的软件包,以便与特定项目或依赖关系兼容。通过 brew switch 命令可以切换不同版本。
  6. 可扩展性: Homebrew 支持自定义和扩展,用户可以贡献新的软件包、公式和 Casks(用于管理 macOS 应用程序的扩展)。

homebrew cask

Homebrew 和 Homebrew Cask 是两个不同的工具,但它们都用于在 macOS 上安装软件。

  1. Homebrew: Homebrew 是一个包管理器,用于在 macOS 上安装命令行工具和库。通过 Homebrew,您可以轻松安装、卸载和管理软件包。例如,要安装 Node.js,您可以运行 brew install node
  2. Homebrew Cask: Homebrew Cask 是 Homebrew 的一个扩展,专门用于管理 macOS 图形界面应用程序(GUI应用)。相对于纯命令行工具,图形应用程序通常有一个用户界面,而 Homebrew Cask 使得通过命令行方式管理这些应用程序更加方便。通过 Homebrew Cask,您可以安装 macOS 应用程序,例如 brew install --cask nodebox

因此,如果只涉及命令行工具或库,使用 brew install 就足够。如果涉及到 macOS 图形应用程序,可能需要使用 brew install --cask

在某些情况下,Homebrew Cask 中的应用程序可能会在 Homebrew 中的软件仓库中没有,因此需要使用 --cask 参数来表示这是一个 Cask 安装。

安装

[homebrew][homebrew]。包管理器。没有网络问题的话参考官方文档安装即可。

这里多说两个场景:

  1. 国内场景,用中科大的源好一些:

    /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
    
  2. arm 架构 和 x86架构:

    如果是m架构的,默认的是 arm 的。有时候我们还需要x86的东西,就要单独装x86的homebrew:

    image-20230628午後80202960

    image-20230628午後82459573

    x86的:

     arch -x86_64 /bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"
    

    和普通命令的区别是开头加了arch -x86_64,用来标记通过兼容模式运行安装脚本。这样安装之后的才是x86版本。

    .zshrc 或者 .bashrc 里添加:

     alias abrew='eval $(/opt/homebrew/bin/brew shellenv) && arch -arm64 /opt/homebrew/bin/brew'
     alias ibrew=' eval $(/usr/local/Homebrew/bin/brew shellenv) && arch -x86_64 /usr/local/bin/brew'
    

常用命令

brew install 软件名
brew search 软件名
brew uninstall 软件名
brew update
brew upgrade 软件名
brew list
brew info/home 软件名 
brew reps
brew services list
brew services start/stop/restart serverName
  1. 查看配置

    brew config
    

    image-20230522午前114815453

  2. 更新 brew 信息

    brew update
    

    image-20230522午後00757587

    遇到了报错: ` fetching failed`。。。

    原因是我电脑上跑的 clash 的混合端口,git 配置为 sock5 端口代理有问题。要改成用 http 代理端口

    git config --global http.https://github.com.proxy 'http://127.0.0.1:7890'
    
  3. 切换不同架构的 brew

    .zshrc 或者 .bashrc 里添加:

    alias abrew='eval $(/opt/homebrew/bin/brew shellenv) && arch -arm64 /opt/homebrew/bin/brew'
    alias ibrew='source /Users/kelu/.zprofile && arch -x86_64 /usr/local/bin/brew'
    

    另外 /Users/kelu/.zprofile 的内容为:

      export HOMEBREW_PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
      export HOMEBREW_API_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/api  
      export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles/ 
      eval $(/usr/local/Homebrew/bin/brew shellenv)
    

天翼云增加子账号并给子账号设置权限

不得不说天翼云的智障帮助机器人,以送佛送一半的心态,把我带进了坑里。这里简单提一下我怎么找到给天翼云开子账号和配权限的过程。

1. 帮助中心

image-20230518午後83916689

点击右下角,问问智能客服:

image-20230518午後84027903

image-20230518午後84108792

2. 工单

image-20230518午後84309283

3. 开通子账号

image-20230518午後84409901

一直到这里都还行。

image-20230518午前94217478

image-20230518午前94247042

image-20230518午前94341253

4. 配置权限

智障的自动帮助就再也没办法帮助了。后来问了客服经理,应该在 所有服务->统一身份认证服务 里进行配置:

image-20230518午前94002616

image-20230518午前94021502

image-20230518午前94510101

image-20230518午前94611598

image-20230518午前94917287

我选择了这一项。

image-20230518午前100530121

完成。


linux 查看nginx 启动路径

查看进程的pid:

ps aux | grep nginx

查看 pid 的路径:

ls -alh /proc/[pid]/exe

2531684225579

确认 nginx 使用的配置文件:

$ /home/app/midware/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

在 M1 Mac 中安装 x86 的 Windows

今天在我的 M1 MacBook Air 上运行了 x86 版本的 Windows 7。在这里做个简单的记录。

安装步骤

  1. 下载并安装 UTM

    首先,访问 UTM 官方网站 下载 UTM 应用。按照提示安装到你的 Mac 上。

  2. 准备好一个 Windows x86 ISO 文件

    需要注意的是,不是所有的 x86 都能在 UTM 上运行。

    我就尝试了好几个 win 10/7 的镜像,都是可以安装,但是到最后运行的时候都会报错。

    你需要在官网上确认,他们测试过必然能跑的镜像:https://mac.getutm.app/gallery/

    image-20230516午後80223847

    进入 Windows 7 的内容:

    可以找到 Requirements 部分的内容,写的非常清楚,需要的是这样的一个镜像:

    en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso

    对应的 hash 值是 36ae90defbad9d9539e649b193ae573b77a71c83.

    image-20230516午後80308966

    在很多地方都能下载到,例如 我在这里下载的:en_windows_7_ultimate_with_sp1_x64_dvd_u_677332

  3. 导入镜像

    image-20230516午後80624660

    选择第二个“emulate”:

    image-20230516午後80647255

    一路往下操作就好:

    Screenshot 1

  4. 安装完成后就可以简单使用了:

    Screenshot 6

  5. 虽然官网上有与宿主机 Mac 共享文件夹的功能,安装这个软件即可: SPICE guest tools

    Screenshot 7

    但我始终没能成功。

    我最后的解决办法是在宿主机 Mac 上用 Python 起临时服务器解决的:

    python3 -m http.server 9000
    

    image-20230516午後81129229

    在虚拟机内访问 Mac 的 ip:9000 即可:

    Screenshot 8

遇到的问题

  1. 安装某些软件提示 NSIS ErrorError launching installer:

    image-20230516午後81358552

    一般是下载网上的软件,保存的路径上有中文导致的。因为系统是纯英文的,对中文支持不太好。

    简单把文件挪到桌面就可以跳过这个问题了。

  2. 无法安装 chrome 和 edge。

    换过不下 10 个版本的离线版 chrome 和 edge,都提示有问题。

    这时候还是得靠 360 极速浏览器。

    但要注意的是,还是挺耗资源的。我看系统监控里的 cpu 常常 100%。

  3. 中文语言包

    除了装 win7,我还装了 xp。但是 xp 的中文支持不行。

    Screenshot 10

    我单独下了个语言包:http://download.microsoft.com/download/WindowsXPEmbedded/Update/2002/NT5XP/EN-US/LANGCHS.exe

    但是装好以后就启动不了的,也就不折腾了。所以有需要的同学注意一下。

总结

UTM 是一个基于 QEMU 的虚拟机,同时也具备模拟器的功能。虚拟化和模拟的主要区别在于它们处理硬件和软件的方式。

虚拟化是在物理硬件上创建虚拟硬件的过程,然后在这些虚拟硬件上运行操作系统和应用程序。虚拟机可以运行与宿主机不同的操作系统。例如,在一台运行 macOS 的 Mac 上,你可以使用虚拟化软件运行 Windows 或 Linux。

模拟器则是用来模拟不同的硬件平台,它可以在一种硬件架构上模拟另一种硬件架构。例如,你可以在一台 ARM 架构的 Mac(如 M1 Mac)上使用模拟器运行 x86 架构的 Windows。

因此,我们在 M1 Mac 上使用 UTM 运行 x86 的 Windows,UTM 需要通过模拟来实现这种硬件架构的转换。这个过程需要大量的计算资源,因此会感觉 Windows 比较卡,尤其是在运行 chrome 等这种占用内存很大的软件。我目前虚拟机里的 CPU常常会飙到 100%。

虚拟化和模拟都有各自的优点和缺点。虚拟化在性能上比模拟更优秀,但需要与宿主机相同的硬件架构。模拟则可以在不同的硬件架构之间进行转换,但会牺牲一些性能。

目前 UTM 也可以在 iOS 上运行。改天我再记录相关的操作。

https://docs.getutm.app/guides/windows/#downloads

https://github.com/aria2/aria2/releases/tag/release-1.36.0

参考资料