BOSh
文章227
标签320
分类74
315晚会 36氪 80后 ADB AI AI Agent AI 代理 AI 助手 AI 网关 AI 评测 AI助手 AI大模型 AI安全 AI应用 AI智能体 AI网关 API API 集成 Agent AionUi Android Automation C++ CLI CLI Proxy API CLIProxyAPI CRM Chrome 插件 Claude Opus 4.6 ConnectBot Debian DeepSeek DenchClaw DevOps Docker GEO GPL GPS GPU Gemini Gemini 3.1 Pro GitHub Gmail Gog Google AI Pro Google API Google Gemini HKUDS Hermes Hermes Agent Hexo Hugo IPV6 Jetpack Compose Kimi-K2.5 Kotlin LINUX LaTeX Linux Markdow Markdown MemU Bot MiniMax NAT64 NIX NODE NVIDIA Build NanoClaw Netcatty Newsletter Open WebUI OpenAI OpenAI 兼容接口 OpenCLI OpenClaw PDF 编译 PicoClaw Prismer QClaw QQ机器人 RAG Reddit Rust SFTP SSH Skills Subagent SuperCall Telegram Bot WebSSH Windows WorkBuddy X X热榜 YouTube ZeroClaw arXiv arch c++ git hugo iMessage n8n nanobot node js ntfs pacman podman zz.ac 东海 两性关系 个人助理 中东 中东冲突 中东局势 中关村论坛 中南大学 中国 中美 习惯养成 云同步 亚洲 代理 以色列 任务管理 伊朗 伊朗危机 伊朗战争 伦理 体育 保护主义 信息流 信息管理 停火 健康管理 光通信 免费试用 共和党 养老金 内容工厂 内容生产 内容筛选 军事冲突 军事动态 军民融合 农村 分享 创业 办公自动化 加密 加密货币 加沙 北斗 医学生 半导体 华为 博客 博客助手 博客部署成功 卫星 原生 JS 反重力 台海局势 台湾 命令 喷嚏网 国产 国产化 国产替代 国际 国际关系 国际局势 国际新闻 图卦 图说 地缘政治 基础设施 多代理 多模态AI 大学分析 大模型 孙少平 学习 安全 实时监控 家庭助理 家庭服务器 家装设计 工作总结 工作效率 工作流编排 工具链 平凡的世界 平台责任 开发 开发实录 开源 开源项目 张雪峰 微信 心理健康 情感 战争 投资工具 指标看板 提示词工程 播客 收件箱清理 效率 效率工具 教程 教育制度 数据分析 数据投毒 文献管理 新能源汽车 新闻汇总 日历聚合 时事 时事总结 显卡 晨报 智能体 智能体生态 朝鲜 架构 架构实践 核协议 核武器 桌面Cowork 模型接入 每日图说 比亚迪 油价 活动运营 浏览器自动化 消息通道 消费者权益 渔船 游戏开发 湘雅医院 热点新闻 版本更新 特朗普 生态系统 生活 生活自动化 生物识别 用例 甲骨文云 电池技术 症状追踪 皮皮虾 监管 目标管理 知识库 社交媒体 社会保障 社会百态 社会观察 科技 科研助手 笔记 第一财经 算法推荐 纽森 经济 经济观察 经验分享 编程 网关 网络 网络安全 美伊关系 美伊冲突 美国 美国大选 美国政治 能源安全 能源市场 腾讯 腾讯,龙虾,OpenClaw 腾讯云 自动化 自动化创作 自动化协作 自动化提醒 自动化流水线 自动化运维 自律教练 自由软件 行为改变 视频摘要 记录 许可证 论文写作 论文阅读 语义搜索 语音代理 读书 读书笔记 读后感 财报季 路遥 迁移 运维 远程运维 邀请确认 部署指南 量子计算 销售自动化 阅读感悟 随笔 霍尔木兹海峡 项目管理 飞书 高中生活 高考志愿 黎巴嫩 龙虾

一言

文章归档

在zz.ac公益主机使用node js

在zz.ac公益主机使用node js

今天尝试在zz.ac公益主机使用node js环境搭建服务,但是运行npm install 提示:

1
2
3
npm error code ERR_INVALID_URL
npm error Invalid URL
npm error A complete log of this run can be found in: /home/bosh/.npm/_logs/2025-12-31T08_50_05_558Z-debug-0.log

查看了日志,经过询问gemini ,gemini回答是代理问题,运行:

1
2
3
4
bosh@h1:~/node-tanzhen$ npm config get proxy
null
bosh@h1:~/node-tanzhen$ npm config get https-proxy
null

显示是没有设置代理。

涛叔的网站说明:

这里的 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 与环境变量的冲突

问题的根源是:curlwget 能够识别并解析包含 %eth0(Scope ID)的 IPv6 URL,但 Node.js (npm) 使用的 URL 解析器非常严格,它把 % 视为非法字符或错误的转义序列,导致了 ERR_INVALID_URL

为了让 npm install 跑通,必须解决npm的代理问题:经过多次尝试使用以下方法解决。

因为有过多次尝试,先删除错误的npm代理

1
2
bosh@h1:~/node-tanzhen$ npm config delete proxy
bosh@h1:~/node-tanzhen$ npm config delete https-proxy

再设置npm代理,成功运行npm install

1
2
3
4
5
6
7
8
9
10
11
12
bosh@h1:~/node-tanzhen$ npm config set proxy "http://[fe80::1]:8888"
bosh@h1:~/node-tanzhen$ npm config set https-proxy "http://[fe80::1]:8888"
bosh@h1:~/node-tanzhen$
bosh@h1:~/node-tanzhen$ npm install

added 77 packages, and audited 78 packages in 3s

17 packages are looking for funding
run `npm fund` for details

found 0 vulnerabilities


关于[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

  1. 安装代理适配器:

    Bash

    1
    npm install https-proxy-agent
  2. 修改 index.js 中的下载逻辑: 找到 https.getaxios.get 的地方,参考如下修改:

    JavaScript

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const { 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

1
2
3
4
5
# 全局安装
npm install -g pm2

# 验证安装是否成功
pm2 -v

提示:

1
2
pm2
-bash: pm2: command not found

2. 使用使用 npx 运行 PM2 启动APP

由于环境依赖特殊的 IPv6 代理环境变量,启动时必须把变量传给 PM2。

Bash

1
HTTP_PROXY="http://[fe80::1]:8888" HTTPS_PROXY="http://[fe80::1]:8888" npx pm2 start app.js --name "app"

运行结果

1
2
3
4
[PM2] Spawning PM2 daemon with pm2_home=/home/bosh/.pm2
[PM2] PM2 Successfully daemonized
[PM2] Starting /home/bosh/node-tanzhen/index.js in fork_mode (1 instance)
[PM2] Done.

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 占用情况

安装成功:

image

本文作者:BOSh
本文链接:http://bosh.zz.ac/posts/840972093.html
版权声明:本文由BoSh发布,部分内容来源于网络。