• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

How to load config data from file?

Scheduled Pinned Locked Moved Unsolved Troubleshooting
12 Posts 4 Posters 4.2k Views 4 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    acimail01
    last edited by Jul 21, 2019, 7:42 PM

    Error message is:
    Uncaught ReferenceError: require is not defined at config.js:15

    I 1 Reply Last reply Jul 21, 2019, 8:02 PM Reply Quote 0
    • I Offline
      idoodler Module Developer @acimail01
      last edited by idoodler Jul 21, 2019, 8:12 PM Jul 21, 2019, 8:02 PM

      @acimail01 Ok, I just got an idea.

      Place your json somewhere in the config folder and place the following function in your config.js.

      function loadJSON(filePath) {
          if (typeof module !== "undefined") {
              return require(filePath);
          } else {
              try {
                  return JSON.parse($.ajax({
                      type: "GET",
                      url: filePath,
                      async: false
                  }).responseText);
              } catch (e) {
                  console.error(e);
                  return {};
              }
          }
      }
      

      And call it like:

      modules: [
      	loadJSON("config/clock.json")
      ]
      

      This function will synchronisly load the given JSON, serializes it and returns it. This code is completly untestet, but it should work anyway:)

      Edit: I just updated my answer to also work with node.js

      1 Reply Last reply Reply Quote 0
      • A Offline
        acimail01
        last edited by Jul 21, 2019, 8:42 PM

        thank you but wont work also.
        Error:
        ReferenceError: $ is not defined at loadJSON

        I want to have all API keys and passwords from a common location and not scattered in the config.js, Hence the thought with a (yml) file.
        maybe this can be solved via an array variable in the config.js or similar.

        I 1 Reply Last reply Jul 21, 2019, 9:41 PM Reply Quote 0
        • I Offline
          idoodler Module Developer @acimail01
          last edited by idoodler Jul 21, 2019, 9:43 PM Jul 21, 2019, 9:41 PM

          @acimail01 Ok, we can fix the $ is not defined at loadJSON.

          Replace the function with the following which uses good old XMLHttpRequest:

          fuction loadJSON(filePath) {
              if (typeof module !== "undefined") {
                  return require(filePath);
              } else {
                  try {
                      var xmlhttp = new XMLHttpRequest();
                      xmlhttp.open("GET", filePath, false);
                      xmlhttp.send();
                      if (xmlhttp.status === 200) {
                          return JSON.parse(xmlhttp.responseText);
                      } else {
                          throw "Unexpected status code!";
                      }
                  } catch (e) {
                      console.error(e);
                      return {};
                  }
              }
          }
          
          1 Reply Last reply Reply Quote 0
          • T Offline
            telmini
            last edited by Jan 25, 2021, 11:57 PM

            Did you manage to make this work? I’m trying to do kinda the same.

            Thanks

            1 Reply Last reply Reply Quote 0
            • 1
            • 2
            • 2 / 2
            • First post
              Last post
            Enjoying MagicMirror? Please consider a donation!
            MagicMirror created by Michael Teeuw.
            Forum managed by Sam, technical setup by Karsten.
            This forum is using NodeBB as its core | Contributors
            Contact | Privacy Policy