关于 Node 引入的问题

2022-03-09 08:51:29 +08:00
 yuhangch

对 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 友帮忙解释下为什么?

8549 次点击
所在节点    Node.js
6 条回复
noe132
2022-03-09 09:01:56 +08:00
什么 ide ,我看了 proto 就是 dist/protobuf/js/parser 的 re-export ,理论上是一个东西
yuhangch
2022-03-09 09:20:17 +08:00
@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.

跟这句有关吗?
noe132
2022-03-09 09:41:04 +08:00
看起来是 ide 问题。试试 vscode ?装了 ts 支持吗?
lisongeee
2022-03-09 10:01:45 +08:00
@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/bilibili-api@1.2.3/dist/>
yuhangch
2022-03-09 10:47:06 +08:00
@lisongeee 明白了,看了 index.js 似乎这是个正确用法
```
import {proto} from '@mr-quin/bilibili-api'
// proto.decodeDanmaku
```
那可不可以说文档里错了呢?或者作者换了打包方式没更新文档
```
import { decodeDanmaku } from '@mr-quin/bilibili-api/proto'
```
lisongeee
2022-03-09 13:39:42 +08:00
@yuhangch 是的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/839006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX