Skip to content

Custom Page - nodebb

Solved Customisation
13 2 458
  • 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
  • TNG + Nodebb

    General tng genealogy nodebb plugin
    4
    0 Votes
    4 Posts
    960 Views
    @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.
  • 2 Votes
    2 Posts
    644 Views
    @dave1904 that’s a really good point actually. I know it was there previously on Persona, but you’re right - no such function exists on harmony. However, putting something in place to mimick the behaviour of Persona won’t be hard from the js standpoint, although I wonder if perhaps we should ask the NodeBB developers is this feature was overlooked?
  • NodeBB: Privileges for the Announcement channel

    Solved Configure nodebb
    6
    1
    1 Votes
    6 Posts
    1k Views
    Up to you really
  • [NODEBB] Help for my custom CSS

    Solved Customisation nodebb css bugfix
    237
    49 Votes
    237 Posts
    84k Views
    @baris said: You should change your selectors so it doesn’t look at the entire document. You probably only want to apply fancybox to stuff inside the #content element which is what changes when the user navigates around the page. So use $('#content a').... for your selectors then the forum logo in the header won’t be selected. I modified the JS Fancybox code now and this code and it seem better // --------------------------------------------- // Fancybox Media Reader (Without Website Logo) // --------------------------------------------- if (top.location.pathname !== '/login') { $(window).on('action:posts.loaded', function(data) { console.log("Polling DOM for lazyLoaded images to apply Fancybox"); $(document).ready(function() { $('#content a').not('.forum-logo').not(".avatar").not(".emoji").not(".bmac-noanimate").each(function() { $('#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]').addClass("noanimate"); }); }); }); } if (top.location.pathname !== '/login') { $(document).ready(function() { $(window).on('action:ajaxify.end', function(data) { $('#content a').not('.logo').not(".avatar").not(".emoji").not(".bmac-noanimate").each(function() { $('#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]').addClass("noanimate"); data.preventDefault() // Strip out the images contained inside blockquotes as this looks nasty :) $('#content blockquote img').remove(); }); Fancybox.bind( '#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]', { groupAll: true, } ); }); }); } // Chat fancybox - fires when chat module loaded and AJAX calls new chat $(document).ready(function() { $(window).on('action:chat.loaded', function(data) { // >>> Se limiter au contenu principal uniquement <<< $('#content img').not('.forum-logo').not(".avatar").not(".emoji").not(".bmac-noanimate").each(function() { var newHref = $(this).attr("src"); $(this).wrap("<a class='fancybox' href='" + newHref + "'/>"); $('#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]').addClass("noanimate"); data.preventDefault(); // Strip out the images contained inside blockquotes as this looks nasty :) $('#content blockquote img').remove(); }); Fancybox.bind( '#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]', { groupAll: true, } ); }); }); For the logo, I must use overflow: visible !important; on [component="brand/logo"] /* --- Logo --- */ [component="brand/logo"] { max-height: 50px; width: auto; height: auto; max-width: 100%; display: block; object-fit: contain; object-position: left center; overflow: visible !important; } Better result !!
  • [NodeBB] Import custom Font

    Solved Customisation custom fonts nodebb css
    12
    3 Votes
    12 Posts
    3k Views
    @cagatay you’ll need to define this in the body tag (or another element if you want greater or more granular targets) - for example body { font-family: "Poppins"; font-size: 16px; } Essentially, you use the font-size CSS directive.
  • [NODEBB] Scroll Button

    Solved Customisation css javascript html scroll button
    7
    1
    0 Votes
    7 Posts
    2k Views
    @downpw ooops. Forgot that. Thanks for adding.
  • Social icon (Nodebb)

    Solved Customisation nodebb social
    7
    0 Votes
    7 Posts
    2k Views
    @phenomlab said in Social icon (Nodebb): @jac I just tested my theory around using the OG image, and according to the Twitter card validator, it works fine [image: 1638880098289-73e805e1-997b-41bf-9259-51c5052ca8fc-image.png] fixed
  • [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