使用 Safari + 同步助手 + 书签收藏方式时,偶尔会出现收藏失败的情况

This issue has been tracked since 2022-10-24.
  • 操作系统 e.g. MacOS

  • 浏览器版本 e.g. Safari

  • 简悦版本 2.0.0

请描述你的问题

CleanShot 2022-11-05 at 21 25 30@2x

Error: ENOENT: no such file or directory, open '/var/folders/jb/3y04ff_16vb25qmq_3c1hfs00000gn/T/.pro.simpread.F2yMqJ'

使用safari+同步助手+书签收藏方式 将当前网页收藏至简悦稍后读,整个流程正常,但每过几天,都会出现上面这个错,收藏应该不成功的,重启同步助手可解。

hexinzhe wrote this answer on 2022-11-16

更新,再次出现同样问题。
当触发收藏时,弹出窗口报错,同时simperead_config.json有变化。diff之后发现:

<     "sync": "2022年11月05日 21:03:28",
---
>     "sync": "2022年11月05日 21:06:29",
164c164
<     "update": "2022年11月05日 21:03:28",
---
>     "update": "2022年11月05日 21:06:29",

变化只有这些

hexinzhe wrote this answer on 2022-11-16

CleanShot 2022-11-05 at 21 21 10@2x
额外发现一个有意思的事情,当在前台,使用safari,用以上流程收藏时。在后面的chrome窗口的右上角,出现了以上弹窗。但收藏肯定是失败了的,我的稍后读列表没有出现任何内容。

Kenshin wrote this answer on 2022-11-16

@hexinzhe

emmm 是不是 Safari 虽然在前台,但失去焦点的情况?

hexinzhe wrote this answer on 2022-11-16

不是,忘了第二个问题吧,只是随口一提

hexinzhe wrote this answer on 2022-11-16

补充,在浏览器访问 http://localhost:7026/,发现http://localhost:7026/unread/以及http://localhost:7026/reading/{id}之类的地址完全正常,但是访问添加稍后读书签的那个地址http://localhost:7026/bookmark.html则会报上面错误。
而去访问/var/folders/jb/3y04ff_16vb25qmq_3c1hfs00000gn/T/.pro.simpread.xx这个文件夹也确实找不到。简单查了一下,/var/folders应该是个临时文件存放地,由此有理由推测bookmark.html自动被macOS清理掉了。
能否自动重新创建该文件夹,或者放弃将其存储在临时文件夹,而是存在Support文件夹下?

Kenshin wrote this answer on 2022-11-16

直接访问 http://localhost:7026/bookmark.html 是不对的(但提示确实需要优化下)

使用 bookmark.html 应该类似 http://localhost:7026/bookmark.html?mode=normal&url=https://sspai.com/post/76649&title=我是标题&favicon=https://cdn-static.sspai.com/favicon/sspai.ico&port=7026 这样的 URL

PS:上面的 我是标题 只是一个参数,具体由获取的 URL 决定。


至于 /var/folders 提到的问题,我需要调查下,因为除了你以外没有用户反馈这个问题。

hexinzhe wrote this answer on 2022-11-16

PS:上面的 我是标题 只是一个参数,具体由获取的 URL 决定。

这个我当然明白,但加不加query,并不影响 bookmark.html 访问不到 的这个结果。

hexinzhe wrote this answer on 2022-11-16

关于 var/folders,既然存放的是临时文件,一段时间后被删除就是其命运,这点是可以肯定的。

Kenshin wrote this answer on 2022-11-16

关于 var/folders,既然存放的是临时文件,一段时间后被删除就是其命运,这点是可以肯定的。

我的意思是同步助手不应该把 bookmark.html 放到这个目录(从代码角度也没有这么做过...

hexinzhe wrote this answer on 2022-11-16

ok,这部分我理解错了,我以为.pro.simpread.F2yMqJ会是一个文件夹,里面存放了一些静态文件之类的,但确实不是。

我又做了以下尝试:


尝试一:

  1. 重启同步助手,访问bookmark.html,可以访问
  2. rm .pro.simpread.*,删除临时文件夹下所有所有相应的临时文件
  3. 重新访问 bookmark.html,报同样错误,不能访问
  4. ll -a| grep sim,没有产生任何临时文件

尝试二,紧接着上面:

  1. 访问http://localhost:7026/reading/任意id,可以访问
  2. ll -a| grep sim
-rw-------    1 xx  staff   447B Nov  6 18:42 .pro.simpread.uW2OaY
-rw-------    1 xx  staff   2.9K Nov  6 18:42 .pro.simpread.v0Ncse
-rw-------    1 xx  staff    85K Nov  6 18:42 .pro.simpread.wUljjZ
  1. cat .pro.simpread.uW2OaY
$( document ).ready( () => {
    getUnread( config => {
        controlbar.Render( 'reading', config );
    });
});

function getUnread( callback ) {
    $.ajax({
        url : 'http://localhost:7026/config'
    }).then( result => {
        if ( result && result.status == 200 ) {
            callback( result.result );
        } else {
            // TO-DO
        }
    }, function( jqXHR, textStatus, errorThrown ) {
        // TO-DO
    });
}

第二个更长,应该是js库吧,截取开头:

cat .pro.simpread.v0Ncse
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(n.controlbar={})}(this,function(n){"use strict";var e="\n/**\n * Navigate\n */\nsr-rd-navigate {\n    display: flex;\n    justify-content: flex-start;\n    padding: 10px 0 0 4px;\n    width: 100%;\n    max-width: 650px;\n}\n\nsr-rd-navigate .link--arrowed {\n    transform: rotate(-180deg) !important;\n}\n\nsr-rd-navigate .link--arrowed .arrow-icon {\n    position: relative;\n    top: -1px;\n    transition: transform 0.3s ease, -webkit-transform 0.3s ease;
...

第三个.pro.simpread.wUljjZ里面是jQuery库,就不用截了。

hexinzhe wrote this answer on 2022-11-16

尝试三:

  1. 清除rm .pro.simpread.*
  2. 重启同步助手
  3. 访问bookmark.html,可以访问
  4. 查看.pro.simpread.xx,总共有四个,分别对应bookmark.html的源文件,以及其中引用的三个js文件,即vendor.bundle.jscommon.bundle.jsbookmark.bundle.js

尝试四,紧接着上面:

  1. 按顺序删除这四个中的某个.pro.xx.xx文件
  2. 刷新bookmark.html页面看是否报错

结果:
删除任何一个,都不再能拉取到对应资源,比如删除common.bundle.js对应的文件.pro.simpread.3ogOW3,再访问http://localhost:7026/common.bundle.js,则会报Error: ENOENT: no such file or directory, open '/var/folders/jb/3y04ff_16vb25qmq_3c1hfs00000gn/T/.pro.simpread.3ogOW3'错误。
当然,当我删除bookmark.html对应的文件.pro.simpread.AMP8We后,再次刷新bookmark.html,就会看到Error: ENOENT: no such file or directory, open '/var/folders/jb/3y04ff_16vb25qmq_3c1hfs00000gn/T/.pro.simpread.AMP8We'错误

hexinzhe wrote this answer on 2022-11-16

补充一点,测试二有点不严谨,因为忘了关浏览器缓存,事实上任何一个临时文件被清除之后都不再能恢复。
清除掉缓存+所有临时文件之后,访问http://localhost:7026/unread/会因为拉取不到对应js,而变成白页。

Kenshin wrote this answer on 2022-11-16

收到!我去 Electron 逛逛,看看有什么类似问题。

More Details About Repo
Owner Name Kenshin
Repo Name simpread
Full Name Kenshin/simpread
Language JavaScript
Created Date 2016-12-19
Updated Date 2022-12-08
Star Count 6548
Watcher Count 91
Fork Count 481
Issue Count 1480

YOU MAY BE INTERESTED

Issue Title Created Date Updated Date