Skip to content

Custom Page - nodebb

Solved Customisation
13 2 3.2k
  • wrote on last edited by DownPW
    #2

    Personally, I don’t use custom routes in navigation. I put the link in a classic HTML href to access the page in an HTML menu of the BrandHeader, then I use the widget to generate the HTML for the page itself.

    c8a4b371-fa0c-406e-90c9-64326de74789-image.jpeg

    a539e2bd-d964-4992-a916-10cac929d2a0-image.jpeg

    Seems you have problem with npm for uninstall the plugin in your screeshot

  • wrote on last edited by Sampo2910
    #3

    Hi, thx for the reply. I managed to get the page up now. But still have a problem when trying to uninstall anything.

    This is all a clean install.

  • wrote on last edited by
    #4

    What is the error when you uninstall in nodebb log ?

  • What is the error when you uninstall in nodebb log ?

    wrote on last edited by
    #5

    @DownPW

    npm resolution error report

    While resolving: grunt-contrib-watch@0.4.4
    Found: grunt@0.3.17
    node_modules/grunt
    dev grunt@“^0.3.17” from the root project

    Could not resolve dependency:
    peer grunt@“~0.4.0” from grunt-contrib-watch@0.4.4
    node_modules/grunt-contrib-watch
    dev grunt-contrib-watch@“^0.4.4” from the root project

    Conflicting peer dependency: grunt@0.4.5
    node_modules/grunt
    peer grunt@“~0.4.0” from grunt-contrib-watch@0.4.4
    node_modules/grunt-contrib-watch
    dev grunt-contrib-watch@“^0.4.4” from the root project

    Fix the upstream dependency conflict, or retry
    this command with --force or --legacy-peer-deps
    to accept an incorrect (and potentially broken) dependency resolution.

  • What is the error when you uninstall in nodebb log ?

    wrote on last edited by
    #6

    @DownPW

    The debug.

    0 verbose cli /home/smiley/.nvm/versions/node/v21.7.3/bin/node /home/smiley/.nvm/versions/node/v21.7.3/bin/npm
    1 info using npm@10.9.1
    2 info using node@v21.7.3
    3 silly config load:file:/home/smiley/.nvm/versions/node/v21.7.3/lib/node_modules/npm/npmrc
    4 silly config load:file:/home/smiley/nodebb/.npmrc
    5 silly config load:file:/home/smiley/.npmrc
    6 silly config load:file:/home/smiley/.nvm/versions/node/v21.7.3/etc/npmrc
    7 verbose title npm uninstall nodebb-plugin-iframely
    8 verbose argv “uninstall” “nodebb-plugin-iframely” “–save”
    9 verbose logfile logs-max:10 dir:/home/smiley/.npm/_logs/2026-03-15T10_02_42_147Z-
    10 verbose logfile /home/smiley/.npm/_logs/2026-03-15T10_02_42_147Z-debug-0.log
    11 silly logfile start cleaning logs, removing 1 files
    12 silly logfile done cleaning log files
    13 silly packumentCache heap:2197815296 maxSize:549453824 maxEntrySize:274726912
    14 silly idealTree buildDeps
    15 silly fetch manifest grunt@~0.4.0
    16 silly packumentCache full:https://registry.npmjs.org/grunt cache-miss
    17 http fetch GET 200 https://registry.npmjs.org/grunt 1238ms (cache revalidated)
    18 silly packumentCache full:https://registry.npmjs.org/grunt set size:169561 disposed:false
    19 verbose stack Error: could not resolve
    19 verbose stack at PlaceDep.failPeerConflict (/home/smiley/.nvm/versions/node/v21.7.3/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/place-dep.js:503:25)
    19 verbose stack at new PlaceDep (/home/smiley/.nvm/versions/node/v21.7.3/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/place-dep.js:157:21)
    19 verbose stack at #buildDepStep (/home/smiley/.nvm/versions/node/v21.7.3/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:920:18)
    19 verbose stack at async Arborist.buildIdealTree (/home/smiley/.nvm/versions/node/v21.7.3/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:181:7)
    19 verbose stack at async Promise.all (index 1)
    19 verbose stack at async Arborist.reify (/home/smiley/.nvm/versions/node/v21.7.3/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:131:5)
    19 verbose stack at async Uninstall.exec (/home/smiley/.nvm/versions/node/v21.7.3/lib/node_modules/npm/lib/commands/uninstall.js:51:5)
    19 verbose stack at async Npm.exec (/home/smiley/.nvm/versions/node/v21.7.3/lib/node_modules/npm/lib/npm.js:207:9)
    19 verbose stack at async module.exports (/home/smiley/.nvm/versions/node/v21.7.3/lib/node_modules/npm/lib/cli/entry.js:74:5)
    20 error code ERESOLVE
    21 error ERESOLVE could not resolve
    22 error
    23 error While resolving: grunt-contrib-watch@0.4.4
    23 error Found: grunt@0.3.17
    23 error node_modules/grunt
    23 error dev grunt@“^0.3.17” from the root project
    23 error
    23 error Could not resolve dependency:
    23 error peer grunt@“~0.4.0” from grunt-contrib-watch@0.4.4
    23 error node_modules/grunt-contrib-watch
    23 error dev grunt-contrib-watch@“^0.4.4” from the root project
    23 error
    23 error Conflicting peer dependency: grunt@0.4.5
    23 error node_modules/grunt
    23 error peer grunt@“~0.4.0” from grunt-contrib-watch@0.4.4
    23 error node_modules/grunt-contrib-watch
    23 error dev grunt-contrib-watch@“^0.4.4” from the root project
    23 error
    23 error Fix the upstream dependency conflict, or retry
    23 error this command with --force or --legacy-peer-deps
    23 error to accept an incorrect (and potentially broken) dependency resolution.
    24 error
    24 error
    24 error For a full report see:
    24 error /home/smiley/.npm/_logs/2026-03-15T10_02_42_147Z-eresolve-report.txt
    25 silly unfinished npm timer reify 1773568962435
    26 silly unfinished npm timer reify:loadTrees 1773568962435
    27 silly unfinished npm timer idealTree:buildDeps 1773568963186
    28 silly unfinished npm timer idealTree:node_modules/grunt-contrib-watch 1773568963198
    29 verbose cwd /home/smiley/nodebb
    30 verbose os Linux 6.0.12-76060012-generic
    31 verbose node v21.7.3
    32 verbose npm v10.9.1
    33 verbose exit 1
    34 verbose code 1
    35 error A complete log of this run can be found in: /home/smiley/.npm/_logs/2026-03-15T10_02_42_147Z-debug-0.log

  • wrote on last edited by
    #7

    Which version of NodeBB do you have?

    It doesn’t look like it’s recent, does it?

    This error is caused by a Grunt version conflict.

    It seems yiu currently uses grunt 0.3.17, but grunt-contrib-watch 0.4.4 requires grunt ~0.4.0. Modern npm versions (7+) are stricter with peer dependencies and will refuse to install conflicting versions.

    have you try to bypass the error (common with old NodeBB installs):

    npm install --legacy-peer-deps
    

    or in your case:

    npm uninstall nodebb-plugin-iframely --legacy-peer-deps
    

    Maybe @phenomlab can help too

  • Which version of NodeBB do you have?

    It doesn’t look like it’s recent, does it?

    This error is caused by a Grunt version conflict.

    It seems yiu currently uses grunt 0.3.17, but grunt-contrib-watch 0.4.4 requires grunt ~0.4.0. Modern npm versions (7+) are stricter with peer dependencies and will refuse to install conflicting versions.

    have you try to bypass the error (common with old NodeBB installs):

    npm install --legacy-peer-deps
    

    or in your case:

    npm uninstall nodebb-plugin-iframely --legacy-peer-deps
    

    Maybe @phenomlab can help too

    wrote on last edited by
    #8

    @DownPW

    npm install --legacy-peer-deps
    

    I have tried already and still did not want to work.

    npm uninstall nodebb-plugin-iframely --legacy-peer-deps
    

    this got rid of iframely though.

  • wrote on last edited by DownPW
    #9

    DownPW said:

    Which version of NodeBB do you have?

    It doesn’t look like it’s recent, does it?

    This error is caused by a Grunt version conflict.

    It seems yiu currently uses grunt 0.3.17, but grunt-contrib-watch 0.4.4 requires grunt ~0.4.0. Modern npm versions (7+) are stricter with peer dependencies and will refuse to install conflicting versions.

  • DownPW said:

    Which version of NodeBB do you have?

    It doesn’t look like it’s recent, does it?

    This error is caused by a Grunt version conflict.

    It seems yiu currently uses grunt 0.3.17, but grunt-contrib-watch 0.4.4 requires grunt ~0.4.0. Modern npm versions (7+) are stricter with peer dependencies and will refuse to install conflicting versions.

    wrote on last edited by
    #10

    @DownPW

    Latest version of nodebb. Fresh install.

    node is 21.7.3

    npm is 10.9.1

  • wrote on last edited by
    #11

    If you’re running the latest NodeBB version, then Node 21 and npm 10 are normally fine. Your error is most likely caused by a legacy dependency left over from an older install or from a plugin (probably something pulling grunt 0.3.x).

    Modern NodeBB versions should not depend on old Grunt packages anymore, so something in your dependency tree is outdated.


    What is probably happening

    You likely have:

    • Latest NodeBB ✅
    • Modern Node/npm ✅
    • Old dependency still present ❌

    Usually caused by:

    • an old plugin
    • an upgrade from an older NodeBB version
    • a package.json that was never fully cleaned

    Recommended clean fix

    Do a clean reinstall of dependencies:

    cd ~/nodebb
    rm -rf node_modules
    rm package-lock.json
    npm cache clean --force
    npm install
    

    If it still fails

    Try:

    npm install --legacy-peer-deps
    

    This is sometimes necessary when plugins have outdated peer dependencies.

    Also check your installed plugins

    Run:

    ./nodebb plugins
    

    Often the issue comes from an outdated plugin (possibly nodebb-plugin-iframely since you were uninstalling it or other.

    Reliable NodeBB admin fix procedure

    A typical safe rebuild process:

    ./nodebb stop
    rm -rf node_modules package-lock.json
    npm install --legacy-peer-deps
    ./nodebb build
    ./nodebb start
    

    if the problems persist maybe open a thread at nodebb communauty

  • If you’re running the latest NodeBB version, then Node 21 and npm 10 are normally fine. Your error is most likely caused by a legacy dependency left over from an older install or from a plugin (probably something pulling grunt 0.3.x).

    Modern NodeBB versions should not depend on old Grunt packages anymore, so something in your dependency tree is outdated.


    What is probably happening

    You likely have:

    • Latest NodeBB ✅
    • Modern Node/npm ✅
    • Old dependency still present ❌

    Usually caused by:

    • an old plugin
    • an upgrade from an older NodeBB version
    • a package.json that was never fully cleaned

    Recommended clean fix

    Do a clean reinstall of dependencies:

    cd ~/nodebb
    rm -rf node_modules
    rm package-lock.json
    npm cache clean --force
    npm install
    

    If it still fails

    Try:

    npm install --legacy-peer-deps
    

    This is sometimes necessary when plugins have outdated peer dependencies.

    Also check your installed plugins

    Run:

    ./nodebb plugins
    

    Often the issue comes from an outdated plugin (possibly nodebb-plugin-iframely since you were uninstalling it or other.

    Reliable NodeBB admin fix procedure

    A typical safe rebuild process:

    ./nodebb stop
    rm -rf node_modules package-lock.json
    npm install --legacy-peer-deps
    ./nodebb build
    ./nodebb start
    

    if the problems persist maybe open a thread at nodebb communauty

    wrote on last edited by
    #12

    @DownPW Sorry for late reply. But, thank you so much. All is working ok again 🙂

    cd ~/nodebb
    rm -rf node_modules
    rm package-lock.json
    npm cache clean --force
    npm install
    

    This worked perfectly. Much appreciated your help.

  • Sampo2910 Sampo2910 has marked this topic as solved on
  • wrote on last edited by DownPW
    #13

    I’m happy to see this 🙂


Did this solution help you?
Did you find the suggested solution useful? Support 💗 Sudonix with a coffee ☕
If your organisation needs deeper expertise around infrastructure, security, or technology leadership, learn more about Phenomlab Ltd. Many of the deeper technical guides behind Sudonix are published there.

Related Topics
  • TNG + Nodebb

    General tng genealogy nodebb plugin
    4
    0 Votes
    4 Posts
    2k Views
    phenomlab
    @Madchatthew said in TNG + Nodebb: you have to try and use duck tape and super glue to change something to make it do what you want it to do I couldn’t have put that better myself.
  • Nodebb icon on google page

    Solved Customisation nodebb
    9
    1
    4 Votes
    9 Posts
    4k Views
    phenomlab
    @Panda It’s been raised multiple times, but only for the open source version, and not hosted.
  • nodebb-plugin-custom-pages

    Solved Customisation plugin custom-pages
    5
    2
    3 Votes
    5 Posts
    5k Views
    phenomlab
    @DownPW it’s possible, yes, but you may inadvertently end up targeting other elements using the same class which of course isn’t desired. Can you provide a link in DM for me to review?
  • NodeBB: Consent page

    Solved Configure nodebb consent
    16
    4 Votes
    16 Posts
    6k Views
    phenomlab
    @DownPW I still do not see any issues.
  • Detect if user is admin

    General nodebb javascript code
    2
    0 Votes
    2 Posts
    2k Views
    phenomlab
    @pwsincd I think you can use userData.isAdmin = isAdmin; if I’m not mistaken - see https://community.nodebb.org/topic/15128/how-to-hide-whitelist-user-field-only-to-owner-or-admin?_=1648802303112 for an example
  • [NodeBB] Custom fields plugin

    Unsolved Customisation nodebb plugins javascript custom
    5
    0 Votes
    5 Posts
    3k Views
    phenomlab
    @pwsincd hi. Just following up on this thread (I know it’s old) but was curious to understand if it’s still an issue or not ?
  • Dark Theme Upper Padding

    Solved Customisation nodebb
    7
    1
    6 Votes
    7 Posts
    2k Views
    crazycells
    @DownPW great! thanks a lot… this code solves my problem.
  • NodeBB Design help

    Solved Customisation
    8
    3
    2 Votes
    8 Posts
    4k Views
    phenomlab
    @riekmedia I’ve applied some new CSS to your site. Can you reload the page and try again ? For the record, this is what I added #footer { background: #2d343e; border-top: 4px solid #2d343e; font-size: 0.9em; margin-top: 70px; padding: 80px 0 0; position: relative; clear: both; bottom: 0; left: 0; right: 0; z-index: 1000; margin-left: -15px; margin-right: -338px; } The /categories page seems a bit messed up, so looking at that currently EDIT - issued some override CSS in the CATEGORIES widget <!--- CSS fix for overspill on /categories page - DO NOT DELETE --> <style> #footer { margin-right: -45px; } </style> That should resolve the /categories issue.