bun 运行报错,疑似上游依赖导致
mobeicanyue opened this issue · comments
bun i cn-font-split
bun add v1.1.13 (bd6a6051)
installed cn-font-split@4.15.1 with binaries:
- cn-font-split
31 packages installed [8.01s]
ls
bun.lockb MiSansArabic-Demibold.otf MiSansArabic-Normal.otf package.json
MiSansArabic-Bold.otf MiSansArabic-Medium.otf node_modules split.mjs
bun split.mjs ./MiSansArabic-Bold.otf ./build
217 | )
218 | try {
219 | if (localFileExisted) {
220 | nativeBinding = require('./woff-build.linux-x64-gnu.node')
221 | } else {
222 | nativeBinding = require('@napi-rs/woff-build-linux-x64-gnu')
^
TypeError: ~/Code/npm/misans-bash/tmp/misana-arabic/node_modules/@napi-rs/woff-build-linux-x64-gnu/woff-build.linux-x64-gnu.node: undefined symbol: BrotliDecoderDecompress
at ~/Code/npm/misans-bash/tmp/misana-arabic/node_modules/@napi-rs/woff-build/index.js:222:15
Bun v1.1.13 (Linux x64)
split.mjs 内容如下
import { fontSplit } from 'cn-font-split';
const args = process.argv.slice(2);
fontSplit({
FontPath: args[0],
destFold: args[1],
testHTML: false, // html 报告文件
reporter: false, // json 格式报告
css: {
comment: {
base: false,
nameTable: false,
},
compress: true, // 是否压缩 css
},
// 重命名输出文件
renameOutputFont: '[index][ext]'
});
这个依赖好久没更新了,应该不是这个问题,如果可以的话,可以使用 node 跑跑试试
感觉 bun 对于 .node 文件还没有适配完全,然后这个依赖写的有点问题,本来应该先尝试使用 wasm 的
后面会给一个选项,强制使用 wasm 模式
最奇怪的是,直接运行
cn-font-split
(通过 bun i -g 安装)
或者 bunx cn-font-split
都可以运行无报错
因为 cn-font-split 是懒加载这个依赖的,所以 bunx 应该还没执行到。node 针对 .node 文件支持好,所以没事
cn-font-split -i=./MiSansArabic-Bold.otf -o=./dist --renameOutputFont='[index][ext]' --reporter='false' --testHTML='false'
或者
bunx cn-font-split -i=./MiSansArabic-Bold.otf -o=./dist --renameOutputFont='[index][ext]' --reporter='false' --testHTML='false'
这样似乎不会报错
项目使用全局安装,项目文件夹未安装 cn-split
依赖
node 针对 .node 文件支持好,所以没事。
这是什么意思?
我用 bun 安装的实际上是 node 在运行吗?
bun 应该是和 node 共享依赖了,cn-font-split 在 bin 文件头部指定了使用 node,所以被安装到全局之后,会使用 node 的运行时。bunx 则是以 bun 的命令行形式运行的,采用的是 bun 的运行时。
在我写第三版本的时候,还没有 bun,所以识别的是 node,后面也一直没有改过来。
因为 bun 和 node 太像了,所以是没有进一步区分出 bun 与 node 。
意思是用命令行跑 bunx cn-font-split
的时候,实际上是 node 的运行时吗?