今天尝试在zz.ac公益主机使用node js环境搭建服务,但是运行npm install 提示:
| |
查看了日志,经过询问gemini ,gemini回答是代理问题,运行:
| |
显示是没有设置代理。
涛叔的网站说明:
这里的 eth0@if23 就是前面说的 veth 链路的用户端设备。注意它已经设置了 fe80::2/64 本地链接地址。登录之后无法直接访问外部网络环境。但你用 curl 访问 github.com 就会发现是通的。这是因为系统会自动设置 HTTP 代理环境变量:
$ export|grep http declare -x http_proxy=“http://[fe80::1%eth0]:8888” declare -x https_proxy=“http://[fe80::1%eth0]:8888”
再次咨询AI,回答:
你的容器只有 Link-local 地址 (
fe80::/64),这意味着它不能直接通过路由访问公网,必须通过宿主机在fe80::1(网关)上监听的 HTTP 代理来转发请求。核心矛盾:npm 与环境变量的冲突
问题的根源是:
curl和wget能够识别并解析包含%eth0(Scope ID)的 IPv6 URL,但 Node.js (npm) 使用的 URL 解析器非常严格,它把%视为非法字符或错误的转义序列,导致了ERR_INVALID_URL。
为了让 npm install 跑通,必须解决npm的代理问题:经过多次尝试使用以下方法解决。
因为有过多次尝试,先删除错误的npm代理
| |
再设置npm代理,成功运行npm install
| |
关于[fe80::1]:8888
[fe80::1]:8888表示:通过 IPv6 协议 访问当前局域网内某个物理标识为1的设备(通常是网关或特定主机)上运行在 8888 端口 的服务。地址部分:
fe80::1这是一个 IPv6 链路本地地址 (Link-Local Address)。
fe80::/10:以
fe80开头的地址类似于 IPv4 中的私有地址(如169.254.x.x)。它专门用于本地链路,也就是说,这个地址只在同一个局域网(或物理链路)内有效,不会经过路由器转发到互联网。::1:这是地址的具体标识符。在 IPv6 中,
::代表中间全是 0。所以完整的地址形式是fe80:0000:0000:0000:0000:0000:0000:0001。常见用途:通常用于邻居发现协议(NDP)、自动配置,或者在没有 DHCP 服务器的情况下让设备之间进行基础通信。
端口部分:
8888紧跟在方括号后面的数字是 端口号。
- 方括号
[]的作用:在 IPv6 中,地址本身包含冒号(:)。为了防止冒号与端口号的冒号混淆,标准规定必须将 IPv6 地址括在方括号内,后面再接端口。- 8888 端口:这是一个非常常用的非官方端口,经常被开发者用于:
- Web 测试服务(如 Python 的
http.server或 Node.js 开发环境)。- 代理软件(如 Fiddler 或 Charles)。
- 特定应用(如 Jupyter Notebook 默认也会使用类似的端口)。
但是运行node app.js还是报错,经过AI寻求了解决方案:使用 https-proxy-agent
安装代理适配器:
Bash
1npm install https-proxy-agent修改
index.js中的下载逻辑: 找到https.get或axios.get的地方,参考如下修改:JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13const { HttpsProxyAgent } = require('https-proxy-agent'); const https = require('https'); // 显式指定不带作用域的 IPv6 地址 const proxy = 'http://[fe80::1]:8888'; const agent = new HttpsProxyAgent(proxy); // 在下载请求中使用 agent https.get('url', { agent }, (res) => { // ... 处理下载流 }).on('error', (e) => { console.error(`下载失败: ${e.message}`); });
经过修改app.js文件内容,运行node app.js 成功!
安装pm2,设置后台运行
1. 首先,全局安装 PM2。如果环境受限,可以尝试在本地安装。
Bash
| |
提示:
| |
2. 使用使用 npx 运行 PM2 启动APP
由于环境依赖特殊的 IPv6 代理环境变量,启动时必须把变量传给 PM2。
Bash
| |
运行结果
| |
PM2 会自动记录你启动时的环境变量,并在重启该进程时自动应用它们。
3. 常用管理命令
PM2 启动后,你可以使用以下命令进行监控和维护:
| 命令 | 说明 |
|---|---|
npx pm2 list | 查看所有正在运行的进程状态 |
npx pm2 logs app | 实时查看运行日志(如下载进度、报错信息) |
npx pm2 stop app | 停止进程 |
npx pm2 restart app | 重启进程(会重新触发下载逻辑) |
| npx pm2 delete app | 从 PM2 列表中彻底删除进程 |
npx pm2 monit | 打开仪表盘,查看内存和 CPU 占用情况 |
安装成功:
