error: uncaughtException: source.split is not a function



  • There are error when I try to view early revisions of posts on the forum (latest version).

    2019-05-16T20:54:46.507Z [4567/9267] - error: uncaughtException: source.split is not a function
    TypeError: source.split is not a function
        at Object.applyPatch (/var/www/myforum.tld/nodebb/node_modules/diff/lib/patch/apply.js:57:22)
        at /var/www/myforum.tld/nodebb/src/posts/diffs.js:101:15
        at Array.reduce (<anonymous>)
        at postDiffLoad (/var/www/myforum.tld/nodebb/src/posts/diffs.js:100:33)
        at /var/www/myforum.tld/nodebb/src/posts/diffs.js:81:3
        at /var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:3888:9
        at /var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:473:16
        at iterateeCallback (/var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:992:24)
        at /var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:969:16
        at /var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:3885:13 {"error":{},"stack":"TypeError: source.split is not a function\n    at Object.applyPatch (/var/www/myforum.tld/nodebb/node_modules/diff/lib/patch/apply.js:57:22)\n    at /var/www/myforum.tld/nodebb/src/posts/diffs.js:101:15\n    at Array.reduce (<anonymous>)\n    at postDiffLoad (/var/www/myforum.tld/nodebb/src/posts/diffs.js:100:33)\n    at /var/www/myforum.tld/nodebb/src/posts/diffs.js:81:3\n    at /var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:3888:9\n    at /var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:473:16\n    at iterateeCallback (/var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:992:24)\n    at /var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:969:16\n    at /var/www/myforum.tld/nodebb/node_modules/async/dist/async.js:3885:13","exception":true,"date":"Thu May 16 2019 23:54:46 GMT+0300 (Eastern European Summer Time)","process":{"pid":9267,"uid":0,"gid":0,"cwd":"/var/www/myforum.tld/nodebb","execPath":"/usr/local/bin/node","version":"v10.15.3","argv":["/usr/local/bin/node","/var/www/myforum.tld/nodebb/app.js"],"memoryUsage":{"rss":150315008,"heapTotal":126160896,"heapUsed":91512784,"external":213130}},"os":{"loadavg":[0.39794921875,0.109375,0.076171875],"uptime":22910},"trace":[{"column":22,"file":"/var/www/myforum.tld/nodebb/node_modules/diff/lib/patch/apply.js","function":"Object.applyPatch","line":57,"method":"applyPatch","native":false},{"column":15,"file":"/var/www/myforum.tld/nodebb/src/posts/diffs.js","function":null,"line":101,"method":null,"native":false},{"column":null,"file":null,"function":"Array.reduce","line":null,"method":"reduce","native":false},{"column":33,"file":"/var/www/myforum.tld/nodebb/src/posts/diffs.js","function":"postDiffLoad","line":100,"method":null,"native":false},{"column":3,"file":"/var/www/myforum.tld/nodebb/src/posts/diffs.js","function":null,"line":81,"method":null,"native":false},{"column":9,"file":"/var/www/myforum.tld/nodebb/node_modules/async/dist/async.js","function":null,"line":3888,"method":null,"native":false},{"column":16,"file":"/var/www/myforum.tld/nodebb/node_modules/async/dist/async.js","function":null,"line":473,"method":null,"native":false},{"column":24,"file":"/var/www/myforum.tld/nodebb/node_modules/async/dist/async.js","function":"iterateeCallback","line":992,"method":null,"native":false},{"column":16,"file":"/var/www/myforum.tld/nodebb/node_modules/async/dist/async.js","function":null,"line":969,"method":null,"native":false},{"column":13,"file":"/var/www/myforum.tld/nodebb/node_modules/async/dist/async.js","function":null,"line":3885,"method":null,"native":false}]}
    


  • It seems like the content being passed isn't a proper string. Can you put console.log(data.post.content) here and let me know the output when you open the edit history.



  • @baris, ok, for example:

    <p><img src="/assets/uploads/files/1555828077895-index.png" alt="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" title="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" style="cursor:pointer;" /></p>
    <ul><li>Организационно-правовая форма: ООО «Игра-сервис» + ИП Долин Юрий Иванович</li><li>Автономная система: <a href="https://bgp.he.net/AS33991" target="_blank">AS33991</a>.</li><li>Услуги: интернет, телевидение, телефония, видеонаблюдение, IT-сервис.</li><li><a href="https://www.g-service.ru/verify-address/" target="_blank">Проверка адреса</a> подключения.</li><li>Работает в Красноярском крае (Красноярск, Зеленогорск, Назарово, Ужур, Шарыпово) и Ульяновске.</li><li>Интернет-сайт: <a href="https://www.g-service.ru/" target="_blank">g-service.ru</a></li><li>Телефоны службы поддержки: +7 (800) 234−39−13 (все города присутствия, звонок бесплатный), +7 (391) 291−39−13 (Красноярск), +7 (39155) 5−51−00 (Назарово), +7 (8422) 33−20−00 (Ульяновск).</li></ul>
    <p><span class="write-container"><br /></span></p>
    <p>Минусы:</p>
    <ul><li>«верхние» тарифы могли бы быть и пониже;</li><li>не всем по вкусу название;</li></ul>
    <p>
    </p>
    <p>Плюсы:</p>
    <ul><li>подключение по IPoE (раздача сетевых параметров по DHCP);</li><li>имеется возможность подключения на тарифы с максимальной скростью  до 500 Мбит/с (в Красноярске);</li><li>работает кое-где в <a href="https://www.g-service.ru/private-sector/" target="_blank">частном секторе</a> (по технологии GPON).</li></ul>
    <p>
    </p>
    2019-05-17T08:30:27.497Z [4567/11073] - error: uncaughtException: source.split is not a function
    <...>
    


  • I can't reproduce with that content, can you change that bit of code to this and post the output.

    // Replace content with re-constructed content from that point in time
    data.post.content = data.diffs.reduce(function (content, currentDiff) {
            console.log(typeof content, content, currentDiff);
    	return diff.applyPatch(content, currentDiff.patch, {
    		fuzzFactor: 1,
    	});
    }, data.post.content);
    


  • @baris, please see below:

    string <p><img src="/assets/uploads/files/1555828077895-index.png" alt="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" title="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" style="cursor:pointer;" /></p>
    <ul><li>Организационно-правовая форма: ООО «Игра-сервис» + ИП Долин Юрий Иванович</li><li>Автономная система: <a href="https://bgp.he.net/AS33991" target="_blank">AS33991</a>.</li><li>Услуги: интернет, телевидение, телефония, видеонаблюдение, IT-сервис.</li><li><a href="https://www.g-service.ru/verify-address/" target="_blank">Проверка адреса</a> подключения.</li><li>Работает в Красноярском крае (Красноярск, Зеленогорск, Назарово, Ужур, Шарыпово) и Ульяновске.</li><li>Интернет-сайт: <a href="https://www.g-service.ru/" target="_blank">g-service.ru</a></li><li>Телефоны службы поддержки: +7 (800) 234−39−13 (все города присутствия, звонок бесплатный), +7 (391) 291−39−13 (Красноярск), +7 (39155) 5−51−00 (Назарово), +7 (8422) 33−20−00 (Ульяновск).</li></ul>
    <p><span class="write-container"><br /></span></p>
    <p>Минусы:</p>
    <ul><li>«верхние» тарифы могли бы быть и пониже;</li><li>не всем по вкусу название;</li></ul>
    <p>
    </p>
    <p>Плюсы:</p>
    <ul><li>подключение по IPoE (раздача сетевых параметров по DHCP);</li><li>имеется возможность подключения на тарифы с максимальной скростью  до 500 Мбит/с (в Красноярске);</li><li>работает кое-где в <a href="https://www.g-service.ru/private-sector/" target="_blank">частном секторе</a> (по технологии GPON).</li></ul>
    <p>
    </p> { patch:
       'Index: \n===================================================================\n--- \n+++ \n@@ -1,7 +1,7 @@\n-<p><img src="/assets/uploads/files/1555828077895-index.png" alt="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" title="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" style="cursor:pointer;"></p>\n-<ul><li>Организационно-правовая форма: ООО «Игра-сервис» + ИП Долин Юрий Иванович</li><li>Автономная&nbsp;система: <a href="https://bgp.he.net/AS33991" target="_blank">AS33991</a>.</li><li>Услуги: интернет, телевидение, телефония, видеонаблюдение, IT-сервис.</li><li><a href="https://www.g-service.ru/verify-address/" target="_blank">Проверка адреса</a> подключения.</li><li>Работает&nbsp;в&nbsp;Красноярском&nbsp;крае&nbsp;(Красноярск, Зеленогорск, Назарово, Ужур, Шарыпово)&nbsp;и&nbsp;Ульяновске.</li><li>Интернет-сайт: <a href="https://www.g-service.ru/" target="_blank">g-service.ru</a></li><li>Телефоны службы поддержки: +7 (800) 234−39−13 (все города присутствия, звонок бесплатный), +7 (391) 291−39−13 (Красноярск), +7 (39155) 5−51−00 (Назарово), +7 (8422) 33−20−00 (Ульяновск).</li></ul>\n-<p><span class="write-container"><br></span></p>\n+<p><img src="/assets/uploads/files/1555828077895-index.png" alt="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" title="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" style="cursor:pointer;" /></p>\n+<ul><li>Организационно-правовая форма: ООО «Игра-сервис» + ИП Долин Юрий Иванович</li><li>Автономная система: <a href="https://bgp.he.net/AS33991" target="_blank">AS33991</a>.</li><li>Услуги: интернет, телевидение, телефония, видеонаблюдение, IT-сервис.</li><li><a href="http://g-service.ru/verify-address/" target="_blank">Проверка адреса</a> подключения.</li><li>Работает в Красноярском крае (Красноярск, Зеленогорск, Назарово, Ужур, Шарыпово) и Ульяновске.</li><li>Интернет-сайт: <a href="http://g-service.ru/" target="_blank">g-service.ru</a></li><li>Телефоны службы поддержки: +7 (800) 234−39−13 (все города присутствия, звонок бесплатный), +7 (391) 291−39−13 (Красноярск), +7 (39155) 5−51−00 (Назарово), +7 (8422) 33−20−00 (Ульяновск).</li></ul>\n+<p><span class="write-container"><br /></span></p>\n <p>Минусы:</p>\n <ul><li>«верхние» тарифы могли бы быть и пониже;</li><li>не всем по вкусу название;</li></ul>\n <p>\n </p>\n',
      pid: '45' }
    boolean false { patch:
       'Index: \n===================================================================\n--- \n+++ \n@@ -1,18 +1,4 @@\n-<p><img src="/assets/uploads/files/1555828077895-index.png" alt="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" title="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" style="cursor:pointer;"></p>\n-<ul><li>Организационно-правовая форма: ООО «Игра-сервис» + ИП Долин Юрий Иванович</li><li>Автономная&nbsp;система: <a href="https://bgp.he.net/AS33991" target="_blank">AS33991</a>.</li><li>Услуги: интернет, телевидение, телефония, видеонаблюдение, IT-сервис.</li><li><a href="http://g-service.ru/verify-address/" target="_blank">Проверка адреса</a> подключения.</li><li>Работает&nbsp;в&nbsp;Красноярском&nbsp;крае&nbsp;(Красноярск, Зеленогорск, Назарово, Ужур, Шарыпово)&nbsp;и&nbsp;Ульяновске.</li><li>Интернет-сайт: <a href="http://g-service.ru/" target="_blank">g-service.ru</a></li><li>Телефоны службы поддержки: +7 (800) 234−39−13 (все города присутствия, звонок бесплатный), +7 (391) 291−39−13 (Красноярск), +7 (39155) 5−51−00 (Назарово), +7 (8422) 33−20−00 (Ульяновск).</li></ul>\n-<p><span class="write-container"><br></span></p>\n-<p>Минусы:</p>\n-<ul><li>«верхние» тарифы могли бы быть и пониже;</li><li>не всем по вкусу название;</li></ul>\n-<p>\n-</p>\n-<p>Плюсы:</p>\n-<ul><li>подключение по IPoE (раздача сетевых параметров по DHCP);</li><li>имеется возможность подключения на тарифы с максимальной скростью  до 500 Мбит/с (в Красноярске);</li><li>работает кое-где в <a href="https://www.g-service.ru/private-sector/" target="_blank">частном секторе</a> (по технологии GPON).</li></ul>\n-<p>\n-[poll title="Оцените работу провайдера по пятибалльной шкале"]\n-- 1 &mdash; отвратительно\n-- 2 &mdash; плохо\n-- 3 &mdash; удовлетворительно\n-- 4 &mdash; хорошо\n-- 5 &mdash; отлично\n-- не могу оценить\n-[/poll]</p>\n\\ No newline at end of file\n+<p><img src="/assets/uploads/files/1555828077895-index.png" alt="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" title="Интернет-провайдер «Игра-сервис» («Гейм-сервис», «Г-сервис», «Гей-сервис»)" style="cursor:pointer;" /></p>\n+<ul><li>Организационно-правовая форма: ООО «Игра-сервис» + ИП Долин Юрий Иванович</li><li>Автономная система: <a href="https://bgp.he.net/AS33991" target="_blank">AS33991</a>.</li><li>Услуги: интернет, телевидение, телефония, видеонаблюдение, IT-сервис.</li><li><a href="http://g-service.ru/verify-address/" target="_blank">Проверка адреса</a> подключения.</li><li>Работает в Красноярском крае (Красноярск, Зеленогорск, Назарово, Ужур, Шарыпово) и Ульяновске.</li><li>Интернет-сайт: <a href="http://g-service.ru/" target="_blank">g-service.ru</a></li><li>Телефоны службы поддержки: +7 (800) 234−39−13 (все города присутствия, звонок бесплатный), +7 (391) 291−39−13 (Красноярск), +7 (39155) 5−51−00 (Назарово), +7 (8422) 33−20−00 (Ульяновск).</li></ul><p><span class="write-container"><br /></span></p><p>Минусы:</p><ul><li>«верхние» тарифы могли бы быть и пониже;</li><li>не всем по вкусу название;</li></ul><p>\n+</p><p>Плюсы:</p>\n+<ul><li>подключение по IPoE (раздача сетевых параметров по DHCP);</li><li>имеется возможность подключения на тарифы с максимальной скростью  до 500 Мбит/с (в Красноярске);</li><li>работает кое-где в <a href="https://www.g-service.ru/private-sector/" target="_blank">частном секторе</a> (по технологии GPON).</li></ul>\n\\ No newline at end of file\n',
      pid: '45' }
    2019-05-18T09:49:21.398Z [4567/14377] - error: uncaughtException: source.split is not a function
    <...>
    


  • @almond Thanks that is useful. Please try again after updating to latest, this commit should fix the crash https://github.com/NodeBB/NodeBB/commit/35d10f764ae2e31a501cd3e2c27a773d5ee465b7

    Related issue is here https://github.com/kpdecker/jsdiff/issues/247



  • @baris, thanks, there are not crashes but I can't see changes in posts when I try to switch between posts revisions — I see the latest revision only.



  • It looks like an issue with the dependency we are using. Can you reproduce it with a very short post content? So we can post it on their issue tracker.



  • @baris, I can’t reproduce it with short post content — in this case versioning works fine.


Log in to reply
 

Suggested Topics

| |