Skip to content

v4.0.0 Upgrade Support

ActivityPub Test Kategorie
  • CSS - dont get me started - the industry has been going in the wrong direction with this for the last 15 years. I wont bore you with my thoughts on this here, but its incredibly painful to get web pages to look ideal on all devices.

    On a more constructive note, although most of us here will probably access nodebb from a computer, its important to remember 90%+ plus of users will access a forum from a phone.

    Controversial as this is, if desktop nodebb was exactly mobile nodebb (i.e. in a narrow window) it may help its long term development. Shocking as that might sound, look at Telegram on web, its exactly mobile view, in a narrow pc window.
    The point is that then the focus would be on optimising the mobile view, without splitting development efforts. At present the mobile view isnt as strong as the pc UI, and you cant do some Admin changes from it. Like setting up widgets as Ive previously posted about

  • @karsten13 can you try with nodebb-theme-persona@14.0.9 and let me know if it works?

  • @baris LGTM, Thanks!

    original-9A42DBD3-F001-46B0-AFB6-40495D64D23B.jpeg

  • @karsten13 nice. Off topic but you can add mb-3 class to your header widget so it is not so close to your title.

    <div class="well mb-3" style="border:1px solid lightgrey">...</div>
    

    image.png

  • Just upgraded to 4.0.5 from 3.x (I think it was the latest 3.12.4)

    The following error occurred

    4. Updating NodeBB data store schema...
    Parsing upgrade scripts...
    OK | 6 script(s) found, 145 skipped
      → [2024/11/25] Add website and location as custom profile fields... OK (0.01 seconds)
      → [2024/12/2] Add setting for keeping original image after resize... OK (0.00 seconds)
      → [2024/2/22] Setting up default configs/privileges re: ActivityPub... OK (0.30 seconds)
      → [2024/11/28] Regenerate user slugs for users whose usernames contained periods...
        [##############] (25/25) 100%  OK (0.01 seconds)
      → [2025/1/27] Changing integer search indices to string...
        [##############] (3659/3659) 100%  OK (4.21 seconds)
      → [2025/2/18] Add timestamp field to searchtopic searchpost collections...Error occurred
    Error occurred during upgrade: MongoServerError: Projection cannot have a mix of inclusion and exclusion.
        at Connection.sendCommand (/home/nodebb/nodebb/node_modules/mongodb/lib/cmap/connection.js:296:27)
        at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
        at async Connection.command (/home/nodebb/nodebb/node_modules/mongodb/lib/cmap/connection.js:323:26)
        at async Server.command (/home/nodebb/nodebb/node_modules/mongodb/lib/sdam/server.js:170:29)
        at async FindOperation.execute (/home/nodebb/nodebb/node_modules/mongodb/lib/operations/find.js:36:16)
        at async tryOperation (/home/nodebb/nodebb/node_modules/mongodb/lib/operations/execute_operation.js:203:20)
        at async executeOperation (/home/nodebb/nodebb/node_modules/mongodb/lib/operations/execute_operation.js:73:16)
        at async FindCursor._initialize (/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/find_cursor.js:60:26)
        at async FindCursor.cursorInit (/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/abstract_cursor.js:607:27)
        at async FindCursor.fetchBatch (/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/abstract_cursor.js:641:13)
    2025-02-27T01:21:41.642Z [4567/150701] - error: uncaughtException: Projection cannot have a mix of inclusion and exclusion.
    MongoServerError: Projection cannot have a mix of inclusion and exclusion.
        at Connection.sendCommand (/home/nodebb/nodebb/node_modules/mongodb/lib/cmap/connection.js:296:27)
        at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
        at async Connection.command (/home/nodebb/nodebb/node_modules/mongodb/lib/cmap/connection.js:323:26)
        at async Server.command (/home/nodebb/nodebb/node_modules/mongodb/lib/sdam/server.js:170:29)
        at async FindOperation.execute (/home/nodebb/nodebb/node_modules/mongodb/lib/operations/find.js:36:16)
        at async tryOperation (/home/nodebb/nodebb/node_modules/mongodb/lib/operations/execute_operation.js:203:20)
        at async executeOperation (/home/nodebb/nodebb/node_modules/mongodb/lib/operations/execute_operation.js:73:16)
        at async FindCursor._initialize (/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/find_cursor.js:60:26)
        at async FindCursor.cursorInit (/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/abstract_cursor.js:607:27)
        at async FindCursor.fetchBatch (/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/abstract_cursor.js:641:13) {"date":"Thu Feb 27 2025 12:21:41 GMT+1100 (Australian Eastern Daylight Time)","error":{"code":2,"codeName":"BadValue","errorResponse":{"code":2,"codeName":"BadValue","errmsg":"Projection cannot have a mix of inclusion and exclusion.","ok":0},"ok":0},"exception":true,"os":{"loadavg":[1.08,0.39,0.18],"uptime":1031967.39},"process":{"argv":["/usr/bin/node","/home/nodebb/nodebb/nodebb","upgrade"],"cwd":"/home/nodebb/nodebb","execPath":"/usr/bin/node","gid":1001,"memoryUsage":{"arrayBuffers":19486426,"external":24049422,"heapTotal":104038400,"heapUsed":70664672,"rss":197357568},"pid":150701,"uid":1001,"version":"v22.14.0"},"stack":"MongoServerError: Projection cannot have a mix of inclusion and exclusion.\n    at Connection.sendCommand (/home/nodebb/nodebb/node_modules/mongodb/lib/cmap/connection.js:296:27)\n    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n    at async Connection.command (/home/nodebb/nodebb/node_modules/mongodb/lib/cmap/connection.js:323:26)\n    at async Server.command (/home/nodebb/nodebb/node_modules/mongodb/lib/sdam/server.js:170:29)\n    at async FindOperation.execute (/home/nodebb/nodebb/node_modules/mongodb/lib/operations/find.js:36:16)\n    at async tryOperation (/home/nodebb/nodebb/node_modules/mongodb/lib/operations/execute_operation.js:203:20)\n    at async executeOperation (/home/nodebb/nodebb/node_modules/mongodb/lib/operations/execute_operation.js:73:16)\n    at async FindCursor._initialize (/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/find_cursor.js:60:26)\n    at async FindCursor.cursorInit (/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/abstract_cursor.js:607:27)\n    at async FindCursor.fetchBatch (/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/abstract_cursor.js:641:13)","trace":[{"column":27,"file":"/home/nodebb/nodebb/node_modules/mongodb/lib/cmap/connection.js","function":"Connection.sendCommand","line":296,"method":"sendCommand","native":false},{"column":5,"file":"node:internal/process/task_queues","function":"process.processTicksAndRejections","line":105,"method":"processTicksAndRejections","native":false},{"column":26,"file":"/home/nodebb/nodebb/node_modules/mongodb/lib/cmap/connection.js","function":"async Connection.command","line":323,"method":"command","native":false},{"column":29,"file":"/home/nodebb/nodebb/node_modules/mongodb/lib/sdam/server.js","function":"async Server.command","line":170,"method":"command","native":false},{"column":16,"file":"/home/nodebb/nodebb/node_modules/mongodb/lib/operations/find.js","function":"async FindOperation.execute","line":36,"method":"execute","native":false},{"column":20,"file":"/home/nodebb/nodebb/node_modules/mongodb/lib/operations/execute_operation.js","function":"async tryOperation","line":203,"method":null,"native":false},{"column":16,"file":"/home/nodebb/nodebb/node_modules/mongodb/lib/operations/execute_operation.js","function":"async executeOperation","line":73,"method":null,"native":false},{"column":26,"file":"/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/find_cursor.js","function":"async FindCursor._initialize","line":60,"method":"_initialize","native":false},{"column":27,"file":"/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/abstract_cursor.js","function":"async FindCursor.cursorInit","line":607,"method":"cursorInit","native":false},{"column":13,"file":"/home/nodebb/nodebb/node_modules/mongodb/lib/cursor/abstract_cursor.js","function":"async FindCursor.fetchBatch","line":641,"method":"fetchBatch","native":false}]}
    

    I know nothing about mongodb so have no clue to the cause of this issue.

  • @jaromanda please install nodebb-plugin-dbsearch@6.2.13 and try again. Let me know if the upgrade script works.

  • @baris No, that made no difference

  • upgrade from v1.12.2, but failed when v3.x to v4.x

    4. Updating NodeBB data store schema...
    Parsing upgrade scripts... 
    OK | 4 script(s) found, 147 skipped
      → [2024/2/22] Setting up default configs/privileges re: ActivityPub...Error occurred
    Error occurred during upgrade: Error: &lsqb;&lsqb;error:invalid-data&rsqb;&rsqb;
        at Meta.slugTaken (/home/nodebb/src/meta/index.js:34:9)
        at Object.wrapperCallback [as slugTaken] (/home/nodebb/src/promisify.js:46:11)
        at generateHandle (/home/nodebb/src/categories/create.js:154:26)
        at Object.wrapperCallback [as generateHandle] (/home/nodebb/src/promisify.js:46:11)
        at /home/nodebb/src/upgrades/4.0.0/activitypub_setup.js:25:36
        at Array.map ()
        at Object.method (/home/nodebb/src/upgrades/4.0.0/activitypub_setup.js:23:42)
        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
        at async Upgrade.process (/home/nodebb/src/upgrade.js:161:4)
        at async Upgrade.run (/home/nodebb/src/upgrade.js:110:2)
    2025-04-14T17:03:51.767Z [4567,4568,4569,4570/27865] - error: uncaughtException: &lsqb;&lsqb;error:invalid-data&rsqb;&rsqb;
    Error: &lsqb;&lsqb;error:invalid-data&rsqb;&rsqb;
        at Meta.slugTaken (/home/nodebb/src/meta/index.js:34:9)
        at Object.wrapperCallback [as slugTaken] (/home/nodebb/src/promisify.js:46:11)
        at generateHandle (/home/nodebb/src/categories/create.js:154:26)
        at Object.wrapperCallback [as generateHandle] (/home/nodebb/src/promisify.js:46:11)
        at /home/nodebb/src/upgrades/4.0.0/activitypub_setup.js:25:36
        at Array.map ()
        at Object.method (/home/nodebb/src/upgrades/4.0.0/activitypub_setup.js:23:42)
        at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
        at async Upgrade.process (/home/nodebb/src/upgrade.js:161:4)
        at async Upgrade.run (/home/nodebb/src/upgrade.js:110:2) {"date":"Tue Apr 15 2025 01:03:51 GMT+0800 (China Standard Time)","error":{},"exception":true,"os":{"loadavg":[0.5,0.2,0.24],"uptime":21399.08},"process":{"argv":["/root/.nvm/versions/node/v20.19.0/bin/node","/home/nodebb/nodebb","upgrade"],"cwd":"/home/nodebb","execPath":"/root/.nvm/versions/node/v20.19.0/bin/node","gid":0,"memoryUsage":{"arrayBuffers":19370345,"external":23881947,"heapTotal":91189248,"heapUsed":62438072,"rss":182493184},"pid":27865,"uid":0,"version":"v20.19.0"},"stack":"Error: &lsqb;&lsqb;error:invalid-data&rsqb;&rsqb;\n    at Meta.slugTaken (/home/nodebb/src/meta/index.js:34:9)\n    at Object.wrapperCallback [as slugTaken] (/home/nodebb/src/promisify.js:46:11)\n    at generateHandle (/home/nodebb/src/categories/create.js:154:26)\n    at Object.wrapperCallback [as generateHandle] (/home/nodebb/src/promisify.js:46:11)\n    at /home/nodebb/src/upgrades/4.0.0/activitypub_setup.js:25:36\n    at Array.map ()\n    at Object.method (/home/nodebb/src/upgrades/4.0.0/activitypub_setup.js:23:42)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at async Upgrade.process (/home/nodebb/src/upgrade.js:161:4)\n    at async Upgrade.run (/home/nodebb/src/upgrade.js:110:2)","trace":[{"column":9,"file":"/home/nodebb/src/meta/index.js","function":"Meta.slugTaken","line":34,"method":"slugTaken","native":false},{"column":11,"file":"/home/nodebb/src/promisify.js","function":"Object.wrapperCallback [as slugTaken]","line":46,"method":"wrapperCallback [as slugTaken]","native":false},{"column":26,"file":"/home/nodebb/src/categories/create.js","function":"generateHandle","line":154,"method":null,"native":false},{"column":11,"file":"/home/nodebb/src/promisify.js","function":"Object.wrapperCallback [as generateHandle]","line":46,"method":"wrapperCallback [as generateHandle]","native":false},{"column":36,"file":"/home/nodebb/src/upgrades/4.0.0/activitypub_setup.js","function":null,"line":25,"method":null,"native":false},{"column":null,"file":null,"function":"Array.map","line":null,"method":"map","native":false},{"column":42,"file":"/home/nodebb/src/upgrades/4.0.0/activitypub_setup.js","function":"Object.method","line":23,"method":"method","native":false},{"column":5,"file":"node:internal/process/task_queues","function":"process.processTicksAndRejections","line":95,"method":"processTicksAndRejections","native":false},{"column":4,"file":"/home/nodebb/src/upgrade.js","function":"async Upgrade.process","line":161,"method":"process","native":false},{"column":2,"file":"/home/nodebb/src/upgrade.js","function":"async Upgrade.run","line":110,"method":"run","native":false}]}
    
  • @Dk please try with the latest commit on master

  • System shared this topic
  • @julian Done, git reset --hard master didn't work for me, but switching to origin/master resolved the issue.
    Thank you

  • When I reply to messages by tagging a user, some numbers appear next to the username. I’m not sure if it’s because of the browser I’m using, but it’s definitely a bug.
    @kereste-6f5c390e

    NodeBB v4.2.1
    Browser: Safari

  • @cagatay does it occur here?

  • @julian no here not.