Skip to content

Custom Page - nodebb

Solved Customisation
13 2 132
  • Hi I am trying to create a custom page called GameTracker. I head to Navigation and add a custom route. Do i type /gametracker or gametracket.tpl in the route. ? To be honest none of them work. When I go to extend/widgets I do not see the template. I have uninstalled and reinstalled but with same problem. Nothing in logs what I can see. What am I doing wrong. I did this in the past no worries. Many of these older plugins to not install at all for me in the ACP. I get a huge error. Now I cannot even uninstall it without error.

    Screenshot 2026-03-14 120142.png

    I tried to gove nodebb the benefit of the doubt. I had new OS install, new mongo blah blah blah but soon as I touch this nodebb its a nightmare lol.

    I also did not have this below on my page. Maybe thats an older version. Someone was mentioning this here in Sudonix some time ago.

    575a537c-21e0-4d39-921c-25b9653a7748-image.png

  • 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

    @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.

  • 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

  • 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.

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

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

    @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 ?

    @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

  • 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

    @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.

  • 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.

    @DownPW

    Latest version of nodebb. Fresh install.

    node is 21.7.3

    npm is 10.9.1

  • 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

    @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.

  • Sampo2910undefined Sampo2910 has marked this topic as solved
  • 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
  • Forum customisation

    Customisation nodebb forum customised
    11
    2
    6 Votes
    11 Posts
    1k Views
    Thank you Mark, the changes look fantastic!!
  • Nodebb design

    Solved General nodebb
    2
    1 Votes
    2 Posts
    844 Views
    @Panda said in Nodebb design: One negative is not being so good for SEO as more Server side rendered forums, if web crawlers dont run the JS to read the forum. From recollection, Google and Bing have the capability to read and process JS, although it’s not in the same manner as a physical person will consume content on a page. It will be seen as plain text, but will be indexed. However, it’s important to note that Yandex and Baidu will not render JS, although seeing as Google has a 90% share of the content available on the web in terms of indexing, this isn’t something you’ll likely lose sleep over. @Panda said in Nodebb design: The “write api” is preferred for server-to-server interactions. This is mostly based around overall security - you won’t typically want a client machine changing database elements or altering data. This is why you have “client-side” which could be DOM manipulation etc, and “server-side” which performs more complex operations as it can communicate directly with the database whereas the client cannot (and if it can, then you have a serious security flaw). Reading from the API is perfectly acceptable on the client-side, but not being able to write. A paradigm here would be something like SNMP. This protocol exists as a UDP (UDP is very efficient, as it is “fire and forget” and does not wait for a response like TCP does) based service which reads performance data from a remote source, thus enabling an application to parse that data for use in a monitoring application. In all cases, SNMP access should be “RO” (Read Only) and not RW (Read Write). It is completely feasible to assume complete control over a firewall for example by having RW access to SNMP and then exposing it to the entire internet with a weak passphrase. You wouldn’t do it (at least, I hope you wouldn’t) and the same ethic applies to server-side rendering and the execution of commands.
  • Forum Icons NodeBB

    Solved Customisation icons forum nodebb
    13
    0 Votes
    13 Posts
    2k Views
    @cagatay That matches what I see [image: 1667218162107-4f0f858d-9812-42b1-9f61-ffb13d31dccd-image.png]
  • 5 Votes
    9 Posts
    2k Views
    is there any way to see whose reputation is changed by this plugin?
  • NodeBB Footer

    Solved Customisation footer nodebb
    10
    1 Votes
    10 Posts
    2k Views
    @phenomlab said in NodeBB Footer: @jac and you. Hope all is well and you recover quickly Thanks pal
  • [NodeBB] username cards

    Solved Customisation nodebb
    8
    5 Votes
    8 Posts
    2k Views
    @phenomlab Aha…nice to know. As always thank you for the reply and information.
  • [NodeBB] First post customization

    Solved Customisation nodebb
    5
    4 Votes
    5 Posts
    1k Views
    @phenomlab thanks
  • [NodeBB] custom Gravatar image not showing

    Solved Customisation
    6
    1 Votes
    6 Posts
    2k Views
    @jac said in [NodeBB] custom Gravatar image not showing: @phenomlab said in [NodeBB] custom Gravatar image not showing: @jac are you using Custom ? Sure am mate Confirmed Fixed