• 主页
  • 归档
  • 软件
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 软件

折腾ts action遇到的其中一个问题

2024-02-11

问题

这是一个简单的ts示例:

TypeScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import os from "os";
import * as core from "@actions/core";
import * as io from "@actions/io";
import * as exec from "@actions/exec";

async function post(): Promise<void> {
if (await io.which("$HOME/gcc-64/bin")) {
await exec.exec("HOME/gcc-64/bin/aarch64-linux-android-as --version");
return;
} else if (await io.which("$HOME/clang/bin/clang")) {
await exec.exec("$HOME/clang/bin/clang --version");
return;
}
}

(async () => {
try {
await post();
} catch (error) {
console.log("Failed to run post step.");
return 1;
}
})();

请分析当编译成cjs时运行node index.js时当$HOME/clang和$HOME/gcc-64都不存在时是否会报错。

解答

答案:不会。

假设io.which方法正常工作,如果两个路径$HOME/gcc-64/bin和$HOME/clang/bin都不存在,则io.which返回的是undefined或者false,因此两个条件判断都不满足,函数将直接结束执行,并不会执行await exec.exec(...)语句,也就不会抛出错误。

在这种情况下,如果io.which方法和exec.exec方法实现都是正确的,只有在尝试执行不存在的路径时才会报错。但代码中并没有提供发生错误时的处理,只是在最外层的自调用匿名函数中捕获异常,并打印“Failed to run post step.”。如果异常未被内部try-catch正确处理,确实会导致运行时报错。

因此,如果其他部分实现正确,环境不存在导致的错误会被内部逻辑处理,不会向用户抛出异常。

解决方法:
将

TypeScript
1
2
console.log("Failed to run post step.");
return 1;

改成

1
2
console.error("Failed to run post step.");
process.exit(1);


-------------本文结束感谢您的阅读-------------



  • TypeScript
  • Github Actions

扫一扫,分享到微信

微信分享二维码
本地搭建第三方alpine repo
dtc编译教程
  1. 1. 问题
  2. 2. 解答

预览:

0  字
评论
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.8
© 2025 dpkg123
本站已苟活 2 年 304 天 16 小时 50 分钟 18 秒
Hexo Theme Yilia by Litten
萌ICP备20231955号
  • 所有文章
  • 友情链接
  • 关于我

tag:

  • 3DS
  • linux
  • buildroot
  • kernel
  • android
  • OPPO
  • makefile
  • miui
  • coloros
  • 手机
  • f2fs
  • dtc
  • dtb
  • shell
  • 刷机工具
  • PostmarketOS
  • ROM移植
  • 刷机
  • hexo
  • web前端
  • github
  • 二次元
  • 9008
  • debian
  • C语言
  • 优化
  • gcov
  • perf
  • twrp
  • build
  • Android
  • Root
  • Github
  • CI
  • Linux
  • 网页加速
  • 哔哩哔哩
  • av10492
  • 猎奇
  • 内核
  • 编译
  • TypeScript
  • Github Actions
  • 网页搭建
  • 速通
  • 教程
  • 奇技淫巧
  • 归档
  • 番剧
  • 别当欧尼酱了
  • 杂谈
  • 虚拟化 Android
  • android kernel
  • gki
  • alpine
  • 软件源
  • fastboot
  • vps
  • 联发科
  • KernelSU
  • kvm
  • kernelSU
  • 移植
  • 内核编译
  • Kernel

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • note现在暂不考虑申请新的友链
  • 图床
  • 留言板
  • 原来的博客
  • Adminzhangの个人博客
  • cyp0633的blog
  • 小码同学
  • U.M.R-Powered-Blog
  • 秋澪Akimio
  • ialtone的小站
  • PiCpo的阁楼
  • artiga033
  • 柏园猫のBlog
  • 欠陥電気の摸鱼小池
  • 洛仙璃の幻梦
  • 木屐落在水洼了
  • 湛蓝的调色板
  • SakuraKooi的Blog
  • 新世界的大门
  • 沨鸾的小窝
  • Revincx
  • JIPA233の小窝
  • Mufanc
  • Fika
  • Pinpe的物语
  • 残夜的小博客
透明小菜鸡一枚<br><br>目前正在学习C++和C<br>正在移植postmarketOS到k30pro上<br>本博客使用github-page作为网页托管平台,netlify提供cdn加速服务。<br>不知道为啥yilia主题改不了下面的文字。<br>总之欢迎来到这里!