Code Monkey home page Code Monkey logo

siyuan-plugin-blog's Issues

本地启动报错 TypeError: Cannot read properties of null (reading 'useContext')

本地 yarn dev 启动后访问报错

 1 of 1 unhandled error
Server Error
TypeError: Cannot read properties of null (reading 'useContext')

This error happened while generating the page. Any console logs will be displayed in the terminal window.
Call Stack
Object.useContext
file:///D:/code/node-siyuan/node_modules/react/cjs/react.development.js (1618:21)
Html
node_modules\next\dist\pages\_document.js (260:105)
renderWithHooks
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5661:16)
renderIndeterminateComponent
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5734:15)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5949:7)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
finishClassComponent
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5691:3)
renderClassComponent
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5699:3)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5946:7)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
renderContextProvider
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5923:3)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6020:11)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
renderContextProvider
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (5923:3)
renderElement
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6020:11)
renderNodeDestructiveImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6107:11)
renderNodeDestructive
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6079:14)
retryTask
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6531:5)
performWork
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6579:7)
<unknown>
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6903:12)
scheduleWork
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (77:3)
startWork
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6902:3)
renderToStringImpl
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (6976:3)
Object.renderToStaticMarkup
file:///D:/code/node-siyuan/node_modules/react-dom/cjs/react-dom-server-legacy.browser.development.js (7001:10)
Object.renderToHTML
file:///D:/code/node-siyuan/node_modules/next/dist/server/render.js (969:41)
async doRender
file:///D:/code/node-siyuan/node_modules/next/dist/server/base-server.js (915:38)
async cacheEntry.responseCache.get.isManualRevalidate.isManualRevalidate
file:///D:/code/node-siyuan/node_modules/next/dist/server/base-server.js (1020:28)
async
file:///D:/code/node-siyuan/node_modules/next/dist/server/response-cache.js (69:36)

add IP 127.0.0.1

在本机上的浏览器上使用。

其实最好做成这种,用户可以自己设置几个固定IP及其别名,方便切换。

能否支持新端口访问?

根据我目前的使用经验,分享插件只能在网络伺服打开的状态下使用
而生成的分享链接有完整的ip地址和网络伺服端口号,也就是说在没有设置授权码的情况下,对方是可以访问完整工作空间的

是否可能生成一个新的端口,只用于在线分享,没有权限访问完整工作空间

docker 间访问报错

NUXT_PUBLIC_SIYUAN_API_URL=http://note:6806
note为思源的docker容器名称
报错内容为:
[intlify] Not found 'go.home' key in 'zh_CN' locale messages.
[intlify] Not found 'syp.about' key in 'zh_CN' locale messages.
[intlify] Not found 'theme.mode.dark' key in 'zh_CN' locale messages.

浏览器表现:
image

博客权限控制

文章预览默认带密码,custom-publish-access 字段控制,公开是 public,带密码是 protected ,默认 private。提供设置为公开按钮。

在线分享后显示401

image
公开分享,页面无法显示,部分请求显示401
思源版本:2.8.10
插件版本:1.8.5

feat:发布权限控制

参考api

  async 判定id权限(块id) {
    let flag = false;

    let 块信息数组 = await 思源api.以sql向思源请求块数据(
      `${this.realoption.思源伺服地址}:${this.realoption.思源伺服端口}`,

      "",
      `select root_id , path  from blocks where id = '${块id}'`
    );
    if (块信息数组 && 块信息数组[0]) {
      let 路径数据 = await this.解析路径(块信息数组[0].path, this.realoption);
      for (doc in 路径数据) {
        路径数据[doc]["custom-publish"] ? (flag = true) : null;
      }
    }
    return flag;
  },
  解析路径: async function (path, realoption) {
    let pathArray = path.replace(".sy", "").split("/");
    pathArray = pathArray.slice(1, pathArray.length);
    let obj = {};
    for (let i = 0; i < pathArray.length; i++) {
      let element = pathArray[i];
      obj[element] = {};
      let attrs = await 思源api.以sql向思源请求块数据(
        `${realoption.思源伺服地址}:${realoption.思源伺服端口}`,
        "",
        `select * from attributes where root_id = '${element}'`
      );
      attrs.forEach((attr) =>
        attr ? (obj[element][attr.name] = attr.value) : null
      );
    }
    return obj;
  },

已实现权限与密码控制

关于在线分享,管理已经分享过的笔记

由于我的笔记比较多,可能有时分享了很多个。回头想关闭分享又忘记了那些是分享过的,像群晖里有个栏里面显示着已经分享过笔记本列表。再点取消就可以了。我看到这个插件上并没有类似的功能,还是说我不知道如何操作。

feat:接口适配器

使用接口适配器适配各种平台,只需要传入参数 ?t= 即可

服务端属性

request阶段生成,非常适合复杂交互

export const getServerSideProps: GetServerSideProps<Props> = async (context) => {
    const query = context.query || {}
    if (query.t instanceof Array) {
        throw new Error("参数类型错误")
    }

    let result = []
    const type = query.t || API_TYPE_CONSTANTS.API_TYPE_SIYUAN
    const api = new API(type)

    result = await api.getRecentPosts(10)

    return {
        props: {
            posts: result
        }
    }
}

客户端属性

构建阶段生成,不适合动态变化的页面

export const getStaticProps: GetStaticProps<Props, Params> = async (context) => {
    // 本地测试
    let pageId = "20220724172444-16a2oc1"

    let page = await getPage(pageId)
    if (!page) {
        page = {}
    }

    // ! is a non-null assertion
    const params = context.params! || {}
    return {
        props: {
            page: page,
            params: params
        }
    }
}

第二版优化集中贴

开了 vpn 的情况下,获取的 ip 有误

image

Windows IP 配置


未知适配器 本地连接:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::5e3a:878e:919a:c767%23
   IPv4 地址 . . . . . . . . . . . . : 192.168.63.61
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

未知适配器 BCC:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::896d:973b:2597:105d%11
   自动配置 IPv4 地址  . . . . . . . : 169.254.195.44
   子网掩码  . . . . . . . . . . . . : 255.255.0.0
   默认网关. . . . . . . . . . . . . :

未知适配器 tun2socks:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::8d:1306:5ae2:fef5%55
   IPv4 地址 . . . . . . . . . . . . : 192.0.2.233
   子网掩码  . . . . . . . . . . . . : 255.255.255.255
   默认网关. . . . . . . . . . . . . :

以太网适配器 以太网:

   连接特定的 DNS 后缀 . . . . . . . :
   IPv6 地址 . . . . . . . . . . . . : 240e:3a1:d60:fea0::79
   IPv6 地址 . . . . . . . . . . . . : 240e:3a1:d60:fea0:18e8:e44:9b0a:8d33
   临时 IPv6 地址. . . . . . . . . . : 240e:3a1:d60:fea0:59b9:ca7d:4838:47e
   本地链接 IPv6 地址. . . . . . . . : fe80::4061:9fa5:f095:6b39%13
   IPv4 地址 . . . . . . . . . . . . : 192.168.31.79
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : fe80::8ac3:97ff:fec1:c01a%13
                                       192.168.31.1

无线局域网适配器 本地连接* 1:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 本地连接* 2:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

无线局域网适配器 WLAN:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 VMware Network Adapter VMnet1:

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::23f3:9410:c7b4:40b7%5
   IPv4 地址 . . . . . . . . . . . . : 192.168.79.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :

以太网适配器 VMware Network Adapter VMnet8:

   连接特定的 DNS 后缀 . . . . . . . :
   IPv6 地址 . . . . . . . . . . . . : fd15:4ba5:5a2b:1008:5337:8865:d57b:44e8
   临时 IPv6 地址. . . . . . . . . . : fd15:4ba5:5a2b:1008:84e0:9e84:4781:6d10
   本地链接 IPv6 地址. . . . . . . . : fe80::768:58bb:f74a:5904%12
   IPv4 地址 . . . . . . . . . . . . : 192.168.80.1
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : fe80::250:56ff:fec0:2222%12

以太网适配器 蓝牙网络连接:

   媒体状态  . . . . . . . . . . . . : 媒体已断开连接
   连接特定的 DNS 后缀 . . . . . . . :

以太网适配器 vEthernet (WSL):

   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::2409:60fe:d19f:85a6%45
   IPv4 地址 . . . . . . . . . . . . : 172.26.0.1
   子网掩码  . . . . . . . . . . . . : 255.255.240.0
   默认网关. . . . . . . . . . . . . :

开了 vpn 的情况下,获取的 ip 有误,是否可以自行选择使用哪个 ip 进行分享

视频加载异常

浏览器视频加载异常
图片
控制台查看是路径异常,希望修复
图片

【建议】创建分享链接时,把文章标题也带上

【建议】创建分享链接时,把文章标题也带上
实际使用体验时,他人看到链接会有几个疑问:
① 这个链接样子很奇怪,不会是什么不正常链接吧
② 这个链接是啥?(尤其是消息很多的 办公场景,很容易遗忘)

修改样式举例:
我给你分享了一篇文章:xxxxxxx (有效期 xxx小时)
打开链接:http://10.0.29.170:50201/plugins/siyuan-blog/#/s/xxxxxx

具体信息样式建议配置成可选。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.