用node打开一个网页

前言

使用node打开网页,要求跨平台

方案

使用子进程来用命令行打开网页链接就可以了,需要注意的是Mac系统使用的是open命令,Windows系统使用的是start命令,Linux等系统使用xdg-open命令。针对不同的操作系统使用不同的命令。

封装子进程命令

将子进程中的exec命令用promisify封装,以返回一个promise

// utils
import util from 'node:util';
import * as child_process from 'child_process';
export const exec = util.promisify(child_process.exec);

封装不同平台的命令

// utils
export const getCommand = (winCommand: string, linuxCommand: string, macCommand: string): string => {if (process.platform === 'win32') {return winCommand;} else if (process.platform === 'darwin') {return macCommand;} else if (process.platform === 'linux') {return linuxCommand;} else {logger.error('Unsupported platform');return '';}
};

根据调用值返回相应的结果

import { exec, getCommand } from '../../utils'
import logger from '../../logger'export const openUrl = async (url: string): Promise<object> => {try {const command = getCommand('start ' + url, 'xdg-open ' + url, 'open ' + url);if (!command) {return { code: 1, msg: 'Unsupported platform' }}await exec(command)return { code: 0, msg: 'Open url success' }} catch (e) {logger.error(`Error open url: ${(e as Error).message}`);return { code: 1, msg: 'Error while open url' }}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用功能包组织C++节点的具体教程

在 ROS&#xff08;Robot Operating System&#xff09;中&#xff0c;使用功能包&#xff08;package&#xff09;来组织 C 节点是一种常见且有效的方式&#xff0c;它能让代码结构更清晰、便于管理和复用。 1. 环境准备 确保已经安装了 ROS&#xff0c;这里以 ROS 2 Humble…

二项式分布html实验

二项式分布html实验 本文将带你一步步搭建一个纯前端的二项分布 Monte-Carlo 模拟器。 只要一个 HTML 文件&#xff0c;打开就能运行&#xff1a; 动态输入试验次数 n、成功概率 p 与重复次数 m点击按钮立刻得到「模拟频数 vs 理论频数」柱状图随着 m 增大&#xff0c;两组柱状…

通过 API 对接应用网络商城实现订单自动化

前言 API&#xff08;Application Programming Interface&#xff09;即应用程序编程接口&#xff0c;是一种允许不同软件应用程序之间进行交互和数据共享的工具。它通过定义一组明确的规则和协议&#xff0c;使得各个软件系统能够以标准化的方式相互通信。 在支付领域&#x…

openwrt作旁路由时的几个常见问题 openwrt作为旁路由配置zerotier 图文讲解

1 先看openwrt时间&#xff0c;一定要保证时间和浏览器和服务器是一致的&#xff0c;不然无法更新 2 openwrt设置旁路由前先测试下&#xff0c;路由器能否ping通主路由&#xff0c;是否能够连接外网&#xff0c;好多旁路由设置完了&#xff0c;发现还不能远程好多就是旁路由本…

FANUC机器人GI与GO位置数据传输设置

FANUC机器人GI与GO位置数据传输设置&#xff08;整数小数分开发&#xff09; 一、概述 在 Fanuc 机器人应用中&#xff0c;如果 IO 点位足够&#xff0c;可以利用机器人 IO 传输位置数据及偏移位置数据等。 二、操作步骤 1、确认通讯软件安装 首先确认机器人控制柜已经安装…

UE5 Assimp 自用

记录一下配assimp库到ue中的过程。因为想在ue里面实现一些几何处理(虽然ue好像有相关的geo的代码&#xff09;&#xff0c;遂配置了一下assimp。 1. 编译整理生成自己所需要的文件。cmake编译&#xff0c;下载github 的官方的assimp-master&#xff0c;然后cmake都是默认的就行…

第18章:MCP在创作领域中的应用

第18章:MCP在创作领域中的应用 创意过程,无论是写作、绘画、音乐创作还是设计,往往充满了不确定性、迭代和灵感的迸发。传统 AI 在创意领域的应用常常局限于风格迁移、简单内容生成等。MCP 框架通过其对记忆、上下文和规划的整合,为 AI Agent 参与和辅助更深层次的创意活动…

电子电子架构 --- 主机厂视角下ECU开发流程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

【Agent】LangManus深度解析:AI自动化框架的对比与langgraph原理

LangManus深度解析&#xff1a;AI自动化框架的技术演进与实践 本文将带你深入探索LangManus这一AI自动化框架的核心技术与其基于langgraph的实现原理&#xff0c;并与OpenManus进行全面对比&#xff0c;助你掌握多智能体系统的前沿技术。 本文3万字&#xff0c;没有时间的话可以…

机器学习-08-推荐算法-案例

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中关联规则 参考 机器学习&#xff08;三&#xff09;&#xff1a;Apriori算法&#xff08;算法精讲&#xff09; Apriori 算法 理论 重点 MovieLens:一个常用的电影推荐系统领域的数据集 23张图&#x…

OpenCV 图形API(63)图像结构分析和形状描述符------计算图像中非零像素的边界框函数boundingRect()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算点集或灰度图像非零像素的 upright&#xff08;不旋转&#xff09;边界矩形。 该函数计算并返回指定点集或灰度图像非零像素的最小 upright …

Redis ⑥-string | hash | list

string类型基本介绍 Redis 中的字符串&#xff0c;是直接按照二进制的方式进行存储的。也就是说&#xff0c;在存取的过程中&#xff0c;是不会做任何编码转换的。存的是啥&#xff0c;取的时候就是啥。 Redis 的这个机制&#xff0c;就使得 Redis 非常适合用来存储各种各样的…

星火燎原:大数据时代的Spark技术革命在数字化浪潮席卷全球的今天,海量数据如同奔涌不息的洪流,传统的数据处理方式已难以满足实时、高效的需求。

星火燎原&#xff1a;大数据时代的Spark技术革命 在数字化浪潮席卷全球的今天&#xff0c;海量数据如同奔涌不息的洪流&#xff0c;传统的数据处理方式已难以满足实时、高效的需求。Apache Spark作为大数据领域的璀璨明星&#xff0c;凭借其卓越的性能和强大的功能&#xff0c…

通信算法之273 : 循环自相关函数和自相关函数

一、循环自相关函数定义与计算流程 ‌定义式‌: 循环自相关函数为时间平均自相关函数的傅里叶变换: Rxα(τ)=1T∫−T/2T/2Rx(t+τ2,t−τ2)e−j2παtdtRxα​(τ)=T1​∫−T/2T/2​Rx​(t+2τ​,t−2τ​)e−j2παtdt 其中,Rx(t,τ)Rx​(t,τ) 是信号的自相关函数,α为循…

使用 VMware 安装一台 Linux 系统之Centos

使用 VMware 安装一台 Linux 系统之Centos 想体验一下 Linux 的魅力&#xff0c;又不想在现有电脑上进行大刀阔斧的改动&#xff1f;使用 VMware 虚拟机是一个绝佳的选择。它能让你在 Windows 或 macOS 系统中轻松创建一个独立的 Linux 环境。本文将手把手带你完成从下载 VMwa…

uniapp-商城-36-shop 购物车 选好了 进行订单确认2 支付方式颜色变化和颜色滤镜filter

颜色滤镜&#xff0c;在好多网页都这样使用&#xff0c;滤掉彩色&#xff0c;显示黑白&#xff0c;这在一些关键的日子中都这样使用。 1、依然回到订单确认页面 看到支付的颜色了嘛&#xff1f; <view class"payType"><view class"box" :class&q…

gerbera文件转PCB文件-Altium Designer

gerbera文件转PCB文件-Altium Designer 1. 新建 CAM 文档2. 导入 Gerber 文件和钻孔文件导入 Gerber 文件导入钻孔文件&#xff08;NC Drill&#xff09; 3. 提取网络表4. 检查并设置层映射5. 导出为 PCB 文件 1. 新建 CAM 文档 打开 Altium Designer&#xff0c;执行以下操作…

Flask 请求数据获取方法详解

一、工作原理 在 Flask 中&#xff0c;所有客户端请求的数据都通过全局的 request 对象访问。该对象是 请求上下文 的一部分&#xff0c;仅在请求处理期间存在。Flask 在收到请求时自动创建 request 对象&#xff0c;并根据请求类型&#xff08;如 GET、POST&#xff09;和内容…

队列基础和例题

基础 #include <queue> #include <iostream>/*** 入队*/ void Test01() {std::queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(777);std::cout << "队列大小:" << q.size() << std::endl;std::cout << &q…

U-Mail邮件加速服务:全球链路加速,安全稳定收发

由于跨国网络拥堵、带宽不稳定等因素&#xff0c;导致海外用户在使用企业邮箱收发邮件时&#xff0c;经常出现邮件收发不畅的问题。针对这种情况&#xff0c;U-Mail正式推出了邮件加速服务&#xff0c;U-Mail邮件加速服务依托全球优质加速链路和转发集群服务器&#xff0c;为海…