Upgrading to Nodebb v1.5.1

Technical Support
  • I'm getting this error when trying to upgrade to v1.5.1, any help would be appreciated:

    1. Bringing base dependencies up to date... OK
    2. Checking installed plugins for updates... OK
    3. Updating NodeBB data store schema...
      /home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:37
      invalidUnicodeChars: XRegExp('[^\p{L}\s\d\-_]', 'g'),
      ^

    TypeError: XRegExp is not a function
    at /home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:37:24
    at /home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:8:20
    at Object.<anonymous> (/home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:27:2)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/ljhardy/public_html/nodebb/nodebb/src/utils.js:3:18)

  • That's weird, try running npm i and then trying again. Maybe check to make sure XRegExp is installed by npm ls xregexp

  • Same error after npm i and rerunning nodebb upgrade. npm ls xregexp gives me:

    invalid: [email protected]

    Do you know what that means?

    Thanks, Len

  • XRegExp should be "xregexp": "3.2.0",

    Try npm r xregexp and then npm i [email protected]

  • So, after npm i [email protected] there are a bunch of warnings but then:

    [email protected] node_modules/xregexp

    However, nodebb upgrade still gives the same error:

    1. Bringing base dependencies up to date... OK
    2. Checking installed plugins for updates... OK
    3. Updating NodeBB data store schema...
      /home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:37
      invalidUnicodeChars: XRegExp('[^\p{L}\s\d\-_]', 'g'),
      ^

    TypeError: XRegExp is not a function
    at /home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:37:24
    at /home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:8:20
    at Object.<anonymous> (/home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:27:2)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/ljhardy/public_html/nodebb/nodebb/src/utils.js:3:18)

    Error: undefined

    And, npm ls xregexp still shows:

    └── [email protected] invalid

    npm ERR! invalid: [email protected] /home/ljhardy/public_html/nodebb/nodebb/node_modules/xregexp

  • What is your nodejs/npm version? Does it still happen if you remove the node_modules folder and run npm i again?

  • npm is 2.15.11
    nodejs is 4.8.3

    after removing node_modules and running "npm i", "nodebb upgrade" gives me this:

    odeBB could not be initialised because there was an error while loading dependencies.
    Please run "npm install --production" and try again.

    For more information, please see: https://docs.nodebb.org/en/latest/installing/os.html

    /home/ljhardy/public_html/nodebb/nodebb/nodebb:46
    throw e;
    ^

    Error: Cannot find module 'prompt'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/ljhardy/public_html/nodebb/nodebb/nodebb:37:11)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)

    I ran "npm install --production", then "./nodebb upgrade" again gives the same error as previous:

    odeBB could not be initialised because there was an error while loading dependencies.
    Please run "npm install --production" and try again.

    For more information, please see: https://docs.nodebb.org/en/latest/installing/os.html

    /home/ljhardy/public_html/nodebb/nodebb/nodebb:46
    throw e;
    ^

    Error: Cannot find module 'prompt'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/ljhardy/public_html/nodebb/nodebb/nodebb:37:11)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)

  • Any more ideas?

  • @ljhardy said in Upgrading to Nodebb v1.5.1:

    /home/ljhardy/public_html/nodebb/nodebb/

    You are running the npm i and upgrade commands in the root folder of the nodebb installation right? So package.json is at

    /home/ljhardy/public_html/nodebb/nodebb/package.json ? Also the NodeBB files shouldn't be in a web accessible folder not sure if its just your folder name or you are actually serving the public_html folder with a webserver.

  • BTW, getting full actual terminal logs would be good, including all of the commands for these things, so we can see where the commands are run, etc.

    Also, use triple backticks to make a code block

    ```
    someCode();
    ```
    

    goes to

    someCode();
    
  • npm i
    npm upgrade
    

    are run in the nodebb root folder.

    I'm assuming that when you say that the NodeBB files shouldn't be web server accessible, that is a security concern and not a potential cause of my issue? I will change that, but it has been running fine (although probably insecurely, based on your point) for a couple of years.

    I will try the commands again and paste in the entire log stream that is showing on the terminal.

    Thanks for the help here.

  • FWIW @julian @baris @psychobunny upgrading to npm@5 and using the package-lockfile.json thats generated could make these kinds of issues go away.

  • @bri npm@5 has some development usability issues. Namely, npm link is broken as an npm i in the main directory will dedupe out of linked modules, breaking lots of things.

  • output of npm i

    > node scripts/install.js
    
    npm WARN prefer global [email protected] should be installed with -g
    
    > [email protected] postinstall /home/ljhardy/public_html/nodebb/nodebb/node_modules/jsonpath
    > node lib/aesprim.js > generated/aesprim-browser.js
    
    
    > [email protected] install /home/ljhardy/public_html/nodebb/nodebb/node_modules/sqlite3
    > node-pre-gyp install --fallback-to-build
    
    [sqlite3] Success: "/home/ljhardy/public_html/nodebb/nodebb/node_modules/sqlite3/lib/binding/node-v46-linux-x64/node_sqlite3.node" already installed
    Pass --update-binary to reinstall or --build-from-source to recompile
    npm WARN unmet dependency /home/ljhardy/public_html/nodebb/nodebb/node_modules/nock/node_modules/changelog requires chalk@'^0.5.1' but will load
    npm WARN unmet dependency /home/ljhardy/public_html/nodebb/nodebb/node_modules/chalk,
    npm WARN unmet dependency which is version 1.1.3
    npm WARN unmet dependency /home/ljhardy/public_html/nodebb/nodebb/node_modules/nock/node_modules/changelog requires semver@'^4.0.3' but will load
    npm WARN unmet dependency /home/ljhardy/public_html/nodebb/nodebb/node_modules/semver,
    npm WARN unmet dependency which is version 5.3.0
    npm WARN unmet dependency /home/ljhardy/public_html/nodebb/nodebb/node_modules/nock/node_modules/changelog requires wordwrap@'^0.0.2' but will load
    npm WARN unmet dependency /home/ljhardy/public_html/nodebb/nodebb/node_modules/wordwrap,
    npm WARN unmet dependency which is version 0.0.3
    

    output of nodebb upgrade

    1. Bringing base dependencies up to date... OK
    2. Checking installed plugins for updates... OK
    3. Updating NodeBB data store schema...
    /home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:37
    		invalidUnicodeChars: XRegExp('[^\\p{L}\\s\\d\\-_]', 'g'),
    		                     ^
    
    TypeError: XRegExp is not a function
        at /home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:37:24
        at /home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:8:20
        at Object.<anonymous> (/home/ljhardy/public_html/nodebb/nodebb/public/src/utils.js:27:2)
        at Module._compile (module.js:409:26)
        at Object.Module._extensions..js (module.js:416:10)
        at Module.load (module.js:343:32)
        at Function.Module._load (module.js:300:12)
        at Module.require (module.js:353:17)
        at require (internal/module.js:12:17)
        at Object.<anonymous> (/home/ljhardy/public_html/nodebb/nodebb/src/utils.js:3:18)
    
    Error: undefined
    
  • Have you nuked your node_modules/ folder and tried npm i --production? It seems npm is getting quite confused with your folder...

  • What the heck? Sqlite3?

  • @Bri - I'm using mongodb, why would sqllite be referenced?

  • I have a current mongodb backup. Would it be possible for me to remove everything, install the latest version of Nodebb and then restore all of the data? How would I do that?

    Thanks, I really appreciate the help here.

  • Ok, I actually had a full directory backup of nodebb from a couple of months ago. I restored that and am able to start nodebb. Now I'll start the upgrade again.

  • Success!!! Thanks guys.


Suggested Topics


  • 0 Votes
    3 Posts
    361 Views

    I recently upgraded FontAwesome on v1.15rc, so here's a little roundup of what I did in case anybody will encounter difficulties.

    Download the latest version of FA from their website. You need this package.

    Unpack and upload the files to your server at "(nodebb_dir)/public/vendor/fontawesome". You only need the contents of "/webfonts", "/less/_variables.less" and "/less/_icons.less". Don't upload anything else.

    Make a copy of your old icons.less and variables.less, then replace them with your new files (remove the underscore).

    Run the script provided by NodeMoster. I modified it a little and removed grep:

    #!/bin/bash ######################################################################################################### ## copy latest font awesome's /webfonts/* to public/vendor/fontawesome/fonts ## ## copy latest font awesome's /less/_variables.less to public/vendor/fontawesome/less/variables.less ## ## copy latest font awesome's /less/_icons.less to public/vendor/fontawesome/less/icons.less ## ######################################################################################################### latestfa=`curl -s https://github.com/FortAwesome/Font-Awesome/releases | grep "tree" | head -1 | grep -o -P '(?<=title=).*(?=>)'` if ! grep $latestfa public/vendor/fontawesome/less/variables.less; then echo "Latest Font Awesome not copied yet!" exit 0; fi #Use back nodebb preferred font sizes sed -i 's#../webfonts#./vendor/fontawesome/fonts#; s/16px/14px/; s#2em#(30em / 14)#' public/vendor/fontawesome/less/variables.less #css for latest FA fonts cat <<EOF > public/vendor/fontawesome/less/path.less @font-face { font-family: 'FontAwesome'; font-style: normal; font-weight: 400; src: url("@{fa-font-path}/fa-brands-400.eot"); src: url("@{fa-font-path}/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("@{fa-font-path}/fa-brands-400.woff2") format("woff2"), url("@{fa-font-path}/fa-brands-400.woff") format("woff"), url("@{fa-font-path}/fa-brands-400.ttf") format("truetype"), url("@{fa-font-path}/fa-brands-400.svg#fontawesome") format("svg"); } @font-face { font-family: 'FontAwesome'; font-style: normal; font-weight: 400; src: url("@{fa-font-path}/fa-regular-400.eot"); src: url("@{fa-font-path}/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("@{fa-font-path}/fa-regular-400.woff2") format("woff2"), url("@{fa-font-path}/fa-regular-400.woff") format("woff"), url("@{fa-font-path}/fa-regular-400.ttf") format("truetype"), url("@{fa-font-path}/fa-regular-400.svg#fontawesome") format("svg"); } @font-face { font-family: 'FontAwesome'; font-style: normal; font-weight: 900; src: url("@{fa-font-path}/fa-solid-900.eot"); src: url("@{fa-font-path}/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("@{fa-font-path}/fa-solid-900.woff2") format("woff2"), url("@{fa-font-path}/fa-solid-900.woff") format("woff"), url("@{fa-font-path}/fa-solid-900.ttf") format("truetype"), url("@{fa-font-path}/fa-solid-900.svg#fontawesome") format("svg"); } EOF #Delete the old font links sed -i '/fa fa-/d; ' src/views/partials/fontawesome.tpl #Get new icons into variable newfontawesome=`grep -o -P '(?<=fa-var-).*(?=:)' public/vendor/fontawesome/less/variables.less` #Make icon Links for i in $newfontawesome; do echo "Insert $i Into Template" echo "<i class=\"fa fa-$i\"></i>" >>/tmp/newfontawesome.txt done #Insert icons into template sed -i '/fa-icons/r /tmp/newfontawesome.txt' src/views/partials/fontawesome.tpl #insert the new font links echo "Done!" #Some icons like fa-clock-o in /recent and fa-group in /group have been renamed and are not compatible with the latest FA5. In order to change them, inspect the element in your browser, under iconPicker class abd change fa-clock-o or fa-group to fa-500px or something else that you can click on and change it. Run this modified Python script by abkcode which replaces all instances of old class names with the new ones. You may need to tweak it. #!/usr/bin/env python import os from collections import OrderedDict findreplace = [ ('fa-500px', 'fa-500px'), ('fa-address-book-o', 'fa-address-book'), ('fa-address-card-o', 'fa-address-card'), ('fa-adn', 'fa-adn'), ('fa-amazon', 'fa-amazon'), ('fa-android', 'fa-android'), ('fa-angellist', 'fa-angellist'), ('fa-apple', 'fa-apple'), ('fa-area-chart', 'fa-chart-area'), ('fa-arrow-circle-o-down', 'fa-arrow-alt-circle-down'), ('fa-arrow-circle-o-left', 'fa-arrow-alt-circle-left'), ('fa-arrow-circle-o-right', 'fa-arrow-alt-circle-right'), ('fa-arrow-circle-o-up', 'fa-arrow-alt-circle-up'), ('fa-arrows-alt', 'fa-expand-arrows-alt'), ('fa-arrows-h', 'fa-arrows-alt-h'), ('fa-arrows-v', 'fa-arrows-alt-v'), ('fa-arrows', 'fa-arrows-alt'), ('fa-asl-interpreting', 'fa-american-sign-language-interpreting'), ('fa-automobile', 'fa-car'), ('fa-bandcamp', 'fa-bandcamp'), ('fa-bank', 'fa-university'), ('fa-bar-chart-o', 'fa-chart-bar'), ('fa-bar-chart', 'fa-chart-bar'), ('fa-bathtub', 'fa-bath'), ('fa-battery-0', 'fa-battery-empty'), ('fa-battery-1', 'fa-battery-quarter'), ('fa-battery-2', 'fa-battery-half'), ('fa-battery-3', 'fa-battery-three-quarters'), ('fa-battery-4', 'fa-battery-full'), ('fa-battery', 'fa-battery-full'), ('fa-behance', 'fa-behance'), ('fa-behance-square', 'fa-behance-square'), ('fa-bell-o', 'fa-bell'), ('fa-bell-slash-o', 'fa-bell-slash'), ('fa-bitbucket-square', 'fa-bitbucket'), ('fa-bitbucket', 'fa-bitbucket'), ('fa-bitcoin', 'fa-btc'), ('fa-black-tie', 'fa-black-tie'), ('fa-bluetooth-b', 'fa-bluetooth-b'), ('fa-bluetooth', 'fa-bluetooth'), ('fa-bookmark-o', 'fa-bookmark'), ('fa-btc', 'fa-btc'), ('fa-building-o', 'fa-building'), ('fa-buysellads', 'fa-buysellads'), ('fa-cab', 'fa-taxi'), ('fa-calendar-check-o', 'fa-calendar-check'), ('fa-calendar-minus-o', 'fa-calendar-minus'), ('fa-calendar-o', 'fa-calendar'), ('fa-calendar-plus-o', 'fa-calendar-plus'), ('fa-calendar-times-o', 'fa-calendar-times'), ('fa-calendar', 'fa-calendar-alt'), ('fa-caret-square-o-down', 'fa-caret-square-down'), ('fa-caret-square-o-left', 'fa-caret-square-left'), ('fa-caret-square-o-right', 'fa-caret-square-right'), ('fa-caret-square-o-up', 'fa-caret-square-up'), ('fa-cc-amex', 'fa-cc-amex'), ('fa-cc-diners-club', 'fa-cc-diners-club'), ('fa-cc-discover', 'fa-cc-discover'), ('fa-cc-jcb', 'fa-cc-jcb'), ('fa-cc-mastercard', 'fa-cc-mastercard'), ('fa-cc-paypal', 'fa-cc-paypal'), ('fa-cc-stripe', 'fa-cc-stripe'), ('fa-cc-visa', 'fa-cc-visa'), ('fa-cc', 'fa-closed-captioning'), ('fa-chain-broken', 'fa-unlink'), ('fa-chain', 'fa-link'), ('fa-check-circle-o', 'fa-check-circle'), ('fa-check-square-o', 'fa-check-square'), ('fa-chrome', 'fa-chrome'), ('fa-circle-o-notch', 'fa-circle-notch'), ('fa-circle-o', 'fa-circle'), ('fa-circle-thin', 'fa-circle'), ('fa-clipboard', 'fa-clipboard'), ('fa-clock-o', 'fa-clock'), ('fa-clone', 'fa-clone'), ('fa-close', 'fa-times'), ('fa-cloud-download', 'fa-cloud-download-alt'), ('fa-cloud-upload', 'fa-cloud-upload-alt'), ('fa-cny', 'fa-yen-sign'), ('fa-code-fork', 'fa-code-branch'), ('fa-codepen', 'fa-codepen'), ('fa-codiepie', 'fa-codiepie'), ('fa-comment-o', 'fa-comment'), ('fa-commenting-o', 'fa-comment-dots'), ('fa-commenting', 'fa-comment-dots'), ('fa-comments-o', 'fa-comments'), ('fa-compass', 'fa-compass'), ('fa-connectdevelop', 'fa-connectdevelop'), ('fa-contao', 'fa-contao'), ('fa-copyright', 'fa-copyright'), ('fa-creative-commons', 'fa-creative-commons'), ('fa-credit-card-alt', 'fa-credit-card'), ('fa-credit-card', 'fa-credit-card'), ('fa-css3', 'fa-css3'), ('fa-cutlery', 'fa-utensils'), ('fa-dashboard', 'fa-tachometer-alt'), ('fa-dashcube', 'fa-dashcube'), ('fa-deafness', 'fa-deaf'), ('fa-dedent', 'fa-outdent'), ('fa-delicious', 'fa-delicious'), ('fa-deviantart', 'fa-deviantart'), ('fa-diamond', 'fa-gem'), ('fa-digg', 'fa-digg'), ('fa-dollar', 'fa-dollar-sign'), ('fa-dot-circle-o', 'fa-dot-circle'), ('fa-dribbble', 'fa-dribbble'), ('fa-drivers-license-o', 'fa-id-card'), ('fa-drivers-license', 'fa-id-card'), ('fa-dropbox', 'fa-dropbox'), ('fa-drupal', 'fa-drupal'), ('fa-edge', 'fa-edge'), ('fa-eercast', 'fa-sellcast'), ('fa-empire', 'fa-empire'), ('fa-envelope-open-o', 'fa-envelope-open'), ('fa-envelope-o', 'fa-envelope'), ('fa-envira', 'fa-envira'), ('fa-etsy', 'fa-etsy'), ('fa-euro', 'fa-euro-sign'), ('fa-eur', 'fa-euro-sign'), ('fa-exchange', 'fa-exchange-alt'), ('fa-expeditedssl', 'fa-expeditedssl'), ('fa-external-link-square', 'fa-external-link-square-alt'), ('fa-external-link', 'fa-external-link-alt'), ('fa-eye-slash', 'fa-eye-slash'), ('fa-eyedropper', 'fa-eye-dropper'), ('fa-eye', 'fa-eye'), ('fa-facebook-f', 'fa-facebook-f'), ('fa-facebook-official', 'fa-facebook'), ('fa-facebook-square', 'fa-facebook-square'), ('fa-facebook', 'fa-facebook-f'), ('fa-feed', 'fa-rss'), ('fa-file-archive-o', 'fa-file-archive'), ('fa-file-audio-o', 'fa-file-audio'), ('fa-file-code-o', 'fa-file-code'), ('fa-file-excel-o', 'fa-file-excel'), ('fa-file-image-o', 'fa-file-image'), ('fa-file-movie-o', 'fa-file-video'), ('fa-file-o', 'fa-file'), ('fa-file-pdf-o', 'fa-file-pdf'), ('fa-file-photo-o', 'fa-file-image'), ('fa-file-picture-o', 'fa-file-image'), ('fa-file-powerpoint-o', 'fa-file-powerpoint'), ('fa-file-sound-o', 'fa-file-audio'), ('fa-file-text-o', 'fa-file-alt'), ('fa-file-text', 'fa-file-alt'), ('fa-file-video-o', 'fa-file-video'), ('fa-file-word-o', 'fa-file-word'), ('fa-file-zip-o', 'fa-file-archive'), ('fa-files-o', 'fa-copy'), ('fa-firefox', 'fa-firefox'), ('fa-first-order', 'fa-first-order'), ('fa-flag-o', 'fa-flag'), ('fa-flash', 'fa-bolt'), ('fa-flickr', 'fa-flickr'), ('fa-floppy-o', 'fa-save'), ('fa-folder-o', 'fa-folder'), ('fa-folder-open-o', 'fa-folder-open'), ('fa-font-awesome', 'fa-font-awesome'), ('fa-fonticons', 'fa-fonticons'), ('fa-fort-awesome', 'fa-fort-awesome'), ('fa-forumbee', 'fa-forumbee'), ('fa-foursquare', 'fa-foursquare'), ('fa-free-code-camp', 'fa-free-code-camp'), ('fa-frown-o', 'fa-frown'), ('fa-futbol-o', 'fa-futbol'), ('fa-gbp', 'fa-pound-sign'), ('fa-gears', 'fa-cogs'), ('fa-gear', 'fa-cog'), ('fa-get-pocket', 'fa-get-pocket'), ('fa-ge', 'fa-empire'), ('fa-gg-circle', 'fa-gg-circle'), ('fa-gg', 'fa-gg'), ('fa-git-square', 'fa-git-square'), ('fa-github-alt', 'fa-github-alt'), ('fa-github-square', 'fa-github-square'), ('fa-github', 'fa-github'), ('fa-gitlab', 'fa-gitlab'), ('fa-gittip', 'fa-gratipay'), ('fa-git', 'fa-git'), ('fa-glass', 'fa-glass-martini'), ('fa-glide-g', 'fa-glide-g'), ('fa-glide', 'fa-glide'), ('fa-google-plus-circle', 'fa-google-plus'), ('fa-google-plus-official', 'fa-google-plus'), ('fa-google-plus-square', 'fa-google-plus-square'), ('fa-google-plus', 'fa-google-plus-g'), ('fa-google-wallet', 'fa-google-wallet'), ('fa-google', 'fa-google'), ('fa-gratipay', 'fa-gratipay'), ('fa-grav', 'fa-grav'), ('fa-group', 'fa-users'), ('fa-hacker-news', 'fa-hacker-news'), ('fa-hand-grab-o', 'fa-hand-rock'), ('fa-hand-lizard-o', 'fa-hand-lizard'), ('fa-hand-o-down', 'fa-hand-point-down'), ('fa-hand-o-left', 'fa-hand-point-left'), ('fa-hand-o-right', 'fa-hand-point-right'), ('fa-hand-o-up', 'fa-hand-point-up'), ('fa-hand-paper-o', 'fa-hand-paper'), ('fa-hand-peace-o', 'fa-hand-peace'), ('fa-hand-pointer-o', 'fa-hand-pointer'), ('fa-hand-rock-o', 'fa-hand-rock'), ('fa-hand-scissors-o', 'fa-hand-scissors'), ('fa-hand-spock-o', 'fa-hand-spock'), ('fa-hand-stop-o', 'fa-hand-paper'), ('fa-handshake-o', 'fa-handshake'), ('fa-hard-of-hearing', 'fa-deaf'), ('fa-hdd-o', 'fa-hdd'), ('fa-header', 'fa-heading'), ('fa-heart-o', 'fa-heart'), ('fa-hospital-o', 'fa-hospital'), ('fa-hotel', 'fa-bed'), ('fa-hourglass-1', 'fa-hourglass-start'), ('fa-hourglass-2', 'fa-hourglass-half'), ('fa-hourglass-3', 'fa-hourglass-end'), ('fa-hourglass-o', 'fa-hourglass'), ('fa-houzz', 'fa-houzz'), ('fa-html5', 'fa-html5'), ('fa-id-badge', 'fa-id-badge'), ('fa-id-card-o', 'fa-id-card'), ('fa-ils', 'fa-shekel-sign'), ('fa-image', 'fa-image'), ('fa-imdb', 'fa-imdb'), ('fa-inr', 'fa-rupee-sign'), ('fa-instagram', 'fa-instagram'), ('fa-institution', 'fa-university'), ('fa-internet-explorer', 'fa-internet-explorer'), ('fa-intersex', 'fa-transgender'), ('fa-ioxhost', 'fa-ioxhost'), ('fa-joomla', 'fa-joomla'), ('fa-jpy', 'fa-yen-sign'), ('fa-jsfiddle', 'fa-jsfiddle'), ('fa-keyboard-o', 'fa-keyboard'), ('fa-krw', 'fa-won-sign'), ('fa-lastfm-square', 'fa-lastfm-square'), ('fa-lastfm', 'fa-lastfm'), ('fa-leanpub', 'fa-leanpub'), ('fa-legal', 'fa-gavel'), ('fa-lemon-o', 'fa-lemon'), ('fa-level-down', 'fa-level-down-alt'), ('fa-level-up', 'fa-level-up-alt'), ('fa-life-bouy', 'fa-life-ring'), ('fa-life-buoy', 'fa-life-ring'), ('fa-life-ring', 'fa-life-ring'), ('fa-life-saver', 'fa-life-ring'), ('fa-lightbulb-o', 'fa-lightbulb'), ('fa-line-chart', 'fa-chart-line'), ('fa-linkedin-square', 'fa-linkedin'), ('fa-linkedin', 'fa-linkedin-in'), ('fa-linode', 'fa-linode'), ('fa-linux', 'fa-linux'), ('fa-list-alt', 'fa-list-alt'), ('fa-long-arrow-down', 'fa-long-arrow-alt-down'), ('fa-long-arrow-left', 'fa-long-arrow-alt-left'), ('fa-long-arrow-right', 'fa-long-arrow-alt-right'), ('fa-long-arrow-up', 'fa-long-arrow-alt-up'), ('fa-mail-forward', 'fa-share'), ('fa-mail-reply-all', 'fa-reply-all'), ('fa-mail-reply', 'fa-reply'), ('fa-map-marker', 'fa-map-marker-alt'), ('fa-map-o', 'fa-map'), ('fa-maxcdn', 'fa-maxcdn'), ('fa-meanpath', 'fa-font-awesome'), ('fa-medium', 'fa-medium'), ('fa-meetup', 'fa-meetup'), ('fa-meh-o', 'fa-meh'), ('fa-minus-square-o', 'fa-minus-square'), ('fa-mixcloud', 'fa-mixcloud'), ('fa-mobile-phone', 'fa-mobile-alt'), ('fa-mobile', 'fa-mobile-alt'), ('fa-modx', 'fa-modx'), ('fa-moon-o', 'fa-moon'), ('fa-money', 'fa-money-bill-alt'), ('fa-mortar-board', 'fa-graduation-cap'), ('fa-navicon', 'fa-bars'), ('fa-newspaper-o', 'fa-newspaper'), ('fa-object-group', 'fa-object-group'), ('fa-object-ungroup', 'fa-object-ungroup'), ('fa-odnoklassniki-square', 'fa-odnoklassniki-square'), ('fa-odnoklassniki', 'fa-odnoklassniki'), ('fa-opencart', 'fa-opencart'), ('fa-openid', 'fa-openid'), ('fa-opera', 'fa-opera'), ('fa-optin-monster', 'fa-optin-monster'), ('fa-pagelines', 'fa-pagelines'), ('fa-paper-plane-o', 'fa-paper-plane'), ('fa-paste', 'fa-clipboard'), ('fa-pause-circle-o', 'fa-pause-circle'), ('fa-paypal', 'fa-paypal'), ('fa-pencil-square', 'fa-pen-square'), ('fa-pencil-square-o', 'fa-edit'), ('fa-pencil', 'fa-pencil-alt'), ('fa-photo', 'fa-image'), ('fa-picture-o', 'fa-image'), ('fa-pie-chart', 'fa-chart-pie'), ('fa-pied-piper-alt', 'fa-pied-piper-alt'), ('fa-pied-piper-pp', 'fa-pied-piper-pp'), ('fa-pied-piper', 'fa-pied-piper'), ('fa-pinterest-p', 'fa-pinterest-p'), ('fa-pinterest-square', 'fa-pinterest-square'), ('fa-pinterest', 'fa-pinterest'), ('fa-play-circle-o', 'fa-play-circle'), ('fa-plus-square-o', 'fa-plus-square'), ('fa-product-hunt', 'fa-product-hunt'), ('fa-qq', 'fa-qq'), ('fa-question-circle-o', 'fa-question-circle'), ('fa-quora', 'fa-quora'), ('fa-ravelry', 'fa-ravelry'), ('fa-ra', 'fa-rebel'), ('fa-rebel', 'fa-rebel'), ('fa-reddit-alien', 'fa-reddit-alien'), ('fa-reddit-square', 'fa-reddit-square'), ('fa-reddit', 'fa-reddit'), ('fa-refresh', 'fa-sync'), ('fa-registered', 'fa-registered'), ('fa-remove', 'fa-times'), ('fa-renren', 'fa-renren'), ('fa-reorder', 'fa-bars'), ('fa-repeat', 'fa-redo'), ('fa-resistance', 'fa-rebel'), ('fa-rmb', 'fa-yen-sign'), ('fa-rotate-left', 'fa-undo'), ('fa-rotate-right', 'fa-redo'), ('fa-rouble', 'fa-ruble-sign'), ('fa-ruble', 'fa-ruble-sign'), ('fa-rub', 'fa-ruble-sign'), ('fa-rupee', 'fa-rupee-sign'), ('fa-s15', 'fa-bath'), ('fa-safari', 'fa-safari'), ('fa-scissors', 'fa-cut'), ('fa-scribd', 'fa-scribd'), ('fa-sellsy', 'fa-sellsy'), ('fa-send-o', 'fa-paper-plane'), ('fa-send', 'fa-paper-plane'), ('fa-share-square-o', 'fa-share-square'), ('fa-shekel', 'fa-shekel-sign'), ('fa-sheqel', 'fa-shekel-sign'), ('fa-shield', 'fa-shield-alt'), ('fa-shirtsinbulk', 'fa-shirtsinbulk'), ('fa-sign-in', 'fa-sign-in-alt'), ('fa-sign-out', 'fa-sign-out-alt'), ('fa-signing', 'fa-sign-language'), ('fa-simplybuilt', 'fa-simplybuilt'), ('fa-skyatlas', 'fa-skyatlas'), ('fa-skype', 'fa-skype'), ('fa-slack', 'fa-slack'), ('fa-sliders', 'fa-sliders-h'), ('fa-slideshare', 'fa-slideshare'), ('fa-smile-o', 'fa-smile'), ('fa-snapchat-ghost', 'fa-snapchat-ghost'), ('fa-snapchat-square', 'fa-snapchat-square'), ('fa-snapchat', 'fa-snapchat'), ('fa-snowflake-o', 'fa-snowflake'), ('fa-soccer-ball-o', 'fa-futbol'), ('fa-sort-alpha-asc', 'fa-sort-alpha-down'), ('fa-sort-alpha-desc', 'fa-sort-alpha-up'), ('fa-sort-amount-asc', 'fa-sort-amount-down'), ('fa-sort-amount-desc', 'fa-sort-amount-up'), ('fa-sort-asc', 'fa-sort-up'), ('fa-sort-desc', 'fa-sort-down'), ('fa-sort-numeric-asc', 'fa-sort-numeric-down'), ('fa-sort-numeric-desc', 'fa-sort-numeric-up'), ('fa-soundcloud', 'fa-soundcloud'), ('fa-spoon', 'fa-utensil-spoon'), ('fa-spotify', 'fa-spotify'), ('fa-square-o', 'fa-square'), ('fa-stack-exchange', 'fa-stack-exchange'), ('fa-stack-overflow', 'fa-stack-overflow'), ('fa-star-half-empty', 'fa-star-half'), ('fa-star-half-full', 'fa-star-half'), ('fa-star-half-o', 'fa-star-half'), ('fa-star-o', 'fa-star'), ('fa-steam-square', 'fa-steam-square'), ('fa-steam', 'fa-steam'), ('fa-sticky-note-o', 'fa-sticky-note'), ('fa-stop-circle-o', 'fa-stop-circle'), ('fa-stumbleupon-circle', 'fa-stumbleupon-circle'), ('fa-stumbleupon', 'fa-stumbleupon'), ('fa-sun-o', 'fa-sun'), ('fa-superpowers', 'fa-superpowers'), ('fa-support', 'fa-life-ring'), ('fa-tablet', 'fa-tablet-alt'), ('fa-tachometer', 'fa-tachometer-alt'), ('fa-telegram', 'fa-telegram'), ('fa-television', 'fa-tv'), ('fa-tencent-weibo', 'fa-tencent-weibo'), ('fa-themeisle', 'fa-themeisle'), ('fa-thermometer-0', 'fa-thermometer-empty'), ('fa-thermometer-1', 'fa-thermometer-quarter'), ('fa-thermometer-2', 'fa-thermometer-half'), ('fa-thermometer-3', 'fa-thermometer-three-quarters'), ('fa-thermometer-4', 'fa-thermometer-full'), ('fa-thermometer', 'fa-thermometer-full'), ('fa-thumb-tack', 'fa-thumbtack'), ('fa-thumbs-o-down', 'fa-thumbs-down'), ('fa-thumbs-o-up', 'fa-thumbs-up'), ('fa-ticket', 'fa-ticket-alt'), ('fa-times-circle-o', 'fa-times-circle'), ('fa-times-rectangle-o', 'fa-window-close'), ('fa-times-rectangle', 'fa-window-close'), ('fa-toggle-down', 'fa-caret-square-down'), ('fa-toggle-left', 'fa-caret-square-left'), ('fa-toggle-right', 'fa-caret-square-right'), ('fa-toggle-up', 'fa-caret-square-up'), ('fa-trash-o', 'fa-trash-alt'), ('fa-trash', 'fa-trash-alt'), ('fa-trello', 'fa-trello'), ('fa-tripadvisor', 'fa-tripadvisor'), ('fa-try', 'fa-lira-sign'), ('fa-tumblr-square', 'fa-tumblr-square'), ('fa-tumblr', 'fa-tumblr'), ('fa-turkish-lira', 'fa-lira-sign'), ('fa-twitch', 'fa-twitch'), ('fa-twitter-square', 'fa-twitter-square'), ('fa-twitter', 'fa-twitter'), ('fa-unsorted', 'fa-sort'), ('fa-usb', 'fa-usb'), ('fa-usd', 'fa-dollar-sign'), ('fa-user-circle-o', 'fa-user-circle'), ('fa-user-o', 'fa-user'), ('fa-vcard-o', 'fa-address-card'), ('fa-vcard', 'fa-address-card'), ('fa-viacoin', 'fa-viacoin'), ('fa-viadeo-square', 'fa-viadeo-square'), ('fa-viadeo', 'fa-viadeo'), ('fa-video-camera', 'fa-video'), ('fa-vimeo-square', 'fa-vimeo-square'), ('fa-vimeo', 'fa-vimeo-v'), ('fa-vine', 'fa-vine'), ('fa-vk', 'fa-vk'), ('fa-volume-control-phone', 'fa-phone-volume'), ('fa-warning', 'fa-exclamation-triangle'), ('fa-wechat', 'fa-weixin'), ('fa-weibo', 'fa-weibo'), ('fa-weixin', 'fa-weixin'), ('fa-whatsapp', 'fa-whatsapp'), ('fa-wheelchair-alt', 'fa-accessible-icon'), ('fa-wikipedia-w', 'fa-wikipedia-w'), ('fa-window-close-o', 'fa-window-close'), ('fa-window-maximize', 'fa-window-maximize'), ('fa-window-restore', 'fa-window-restore'), ('fa-windows', 'fa-windows'), ('fa-won', 'fa-won-sign'), ('fa-wordpress', 'fa-wordpress'), ('fa-wpbeginner', 'fa-wpbeginner'), ('fa-wpexplorer', 'fa-wpexplorer'), ('fa-wpforms', 'fa-wpforms'), ('fa-xing-square', 'fa-xing-square'), ('fa-xing', 'fa-xing'), ('fa-y-combinator-square', 'fa-hacker-news'), ('fa-y-combinator', 'fa-y-combinator'), ('fa-yahoo', 'fa-yahoo'), ('fa-yc', 'fa-y-combinator'), ('fa-yc-square', 'fa-hacker-news'), ('fa-yelp', 'fa-yelp'), ('fa-yen', 'fa-yen-sign'), ('fa-yoast', 'fa-yoast'), ('fa-youtube-play', 'fa-youtube'), ('fa-youtube-square', 'fa-youtube-square'), ('fa-youtube', 'fa-youtube'), ('fa-var-arrows-v', 'fa-var-arrows-alt-v'), ('fa-fa', 'fa-font-awesome') ] def upgrade(project_path, extensions, exclude_directories): for dname, dirs, files in os.walk(project_path): dirs[:] = [d for d in dirs if d not in exclude_directories] for fname in files: if(fname.lower().endswith(extensions)): fpath = os.path.join(dname, fname) print (fpath) s = open(fpath).read() for icon in findreplace: s = s.replace(icon[0]+'"', icon[1]+'"') s = s.replace(icon[0]+"'", icon[1]+"'") s = s.replace(icon[0]+" ", icon[1]+" ") # s = s.replace(icon[0], icon[1]) f = open(fpath, "w") f.write(s) print ("\nAbove files have been modified") project_path = os.getcwd() extensions = ('.html', 'js', '.tpl', '.less') exclude_directories = set(['test', 'build', 'logs']) upgrade(project_path, extensions, exclude_directories) Now we can ./nodebb build and check for errors. You may need to manually replace the older names with the new ones that you can find in variables.less
    Here's an example of an error: Error: NameError: variable @fa-var-arrows-v is undefined in /root/nodebb/node_modules/nodebb-plugin-composer-default/static/less/composer.less

    That is because in version 5 this icon is called fa-var-arrows-alt-v

    After a successful build you can start your forum. If you installed a free version of FA you may want to change the font-weight for .fa, otherwise, a lot of icons will be missing. You also need to set vertical-align to some elements (like categories) as the new icons are aligned differently. .fa { font-weight: 900; //experiment with this, some icons look better with the alignment, some don't vertical-align: -0.125em; }
  • 0 Votes
    3 Posts
    873 Views

    Hi @RogerLevy -- the import process should be fine, there aren't any major breaking changes.

    In fact, if you really want, our upgrade scripts are supposed to be idempotent, so you can run them again (by deleting the schemaLog value from the database) so that ./nodebb upgrade runs them all again.

    Alternatively, delete individual items from that sorted set.

    Alternatively, run individual upgrades by executing ./nodebb upgrade upgrade_script_name 😄

    Lots of options!

  • 0 Votes
    8 Posts
    2k Views

    did it today...maybe nodebb is able to fix it

  • 0 Votes
    4 Posts
    1k Views

    @Jenkler said in Time for update to 1.4.5!:

    0.3.1

    All fixed to 1.4.5 😉

  • 0 Votes
    2 Posts
    2k Views

    @Verpz share your Apache config. I suspect it to be wrong.

    Also check the log files of NodeBB for any errors.