如何在JavaScript版GitHub Action中包含keytar.node额外资源?
解决方案:在JavaScript类型GitHub Action中包含keytar.node文件
当然可以通过纯JavaScript方式解决这个问题,核心是确保keytar.node原生模块文件被正确打包、提交并被Action运行环境读取,具体操作步骤如下:
1. 正确打包原生模块
使用GitHub官方推荐的@vercel/ncc工具打包你的Action代码,它会自动识别并包含Node.js原生模块(.node文件),执行以下命令:
ncc build src/index.js -o build
打包完成后,手动确认build目录下同时存在index.js和keytar.node文件。
2. 确保代码能正确加载模块
在index.js中通过相对路径或动态路径加载keytar.node,避免路径错误:
// 直接相对路径加载 const keytar = require('./keytar.node'); // 或用path模块确保路径正确(适用于复杂打包结构) const path = require('path'); const keytar = require(path.join(__dirname, 'keytar.node'));
3. 提交并发布完整文件
- 不要在
.gitignore中忽略build/keytar.node,确保该文件被提交到GitHub仓库; - 发布Action版本时,确认
build目录下的所有文件都被包含在发布的artifact中,避免遗漏原生模块文件。
额外注意事项
keytar作为原生模块,依赖运行环境的系统架构(如Linux x64),需确保打包keytar.node时的环境与GitHub Runner的环境一致。如果需要兼容多架构,可以打包对应版本的原生模块,并在代码中根据运行环境动态加载匹配的文件。
内容的提问来源于stack exchange,提问作者Tal Rofe
相关产品推荐
相关产品推荐

