
对 node 不太熟,想用这个包下载弹幕玩玩,弹幕的解码器文档如下
https://github.com/Mr-Quin/bilibili-api#Protobuf
import { decodeDanmaku } from '@mr-quin/bilibili-api/proto' const buffer = await biliRequest((api) => api.videoDanmakuProto, { vid: 'BV1vE411s7kX', }) const danmaku = buffer.map(decodeDanmaku) 下面有这么一句注释
This is not done internally because the protobuf schema file is quite big and should only be imported when needed.
看不太懂
自己用的时候使用
import { decodeDanmaku } from '@mr-quin/bilibili-api/proto' 提示找不到 proto ,IDE 的 quick fix 之后,import 语句变为
import {decodeDanmaku} from "@mr-quin/bilibili-api/dist/protobuf/js/parser"; 此时可以正常使用了,请 v 友帮忙解释下为什么?
1 noe132 2022 年 3 月 9 日 via Android 什么 ide ,我看了 proto 就是 dist/protobuf/js/parser 的 re-export ,理论上是一个东西 |
2 yuhangch OP @noe132 idea 哦我又看了一下,IDE 给出的两个建议,都能用 ``` import {decodeDanmaku} from "@mr-quin/bilibili-api/dist/protobuf/js/parser" import { decodeDanmaku } from '@mr-quin/bilibili-api/dist/proto'; ``` 那么问题变成 `@mr-quin/bilibili-api/dist/proto` 跟 `@mr-quin/bilibili-api/proto`是什么区别? 为什么后者找不到 > This is not done internally because the protobuf schema file is quite big and should only be imported when needed. 跟这句有关吗? |
3 noe132 2022 年 3 月 9 日 via Android 看起来是 ide 问题。试试 vscode ?装了 ts 支持吗? |
4 lisongeee 2022 年 3 月 9 日 @yuhangch 因为 @mr-quin/bilibili-api 这个包 只有 dist 这个目录,@mr-quin/bilibili-api/proto 不存在,根据 package.json 的 main 字段,node 来判断 @mr-quin/bilibili-api 实际引入的是哪个文件,但是你用 @mr-quin/bilibili-api/dist/proto 就直接越过了 package.json ,直接去引入 @mr-quin/bilibili-api/dist/proto.js 文件了,<https://cdn.jsdelivr.net/npm/@mr-quin/[email protected]/dist/> |
5 yuhangch OP @lisongeee 明白了,看了 index.js 似乎这是个正确用法 ``` import {proto} from '@mr-quin/bilibili-api' // proto.decodeDanmaku ``` 那可不可以说文档里错了呢?或者作者换了打包方式没更新文档 ``` import { decodeDanmaku } from '@mr-quin/bilibili-api/proto' ``` |