### Platform Support The following shows module APIs available for each platform. | | Linux
(Ubuntu) | Raspbian
(Raspberry Pi) | NuttX
(STM32F4-Discovery) | TizenRT
(Artik053) | | :---: | :---: | :---: | :---: | :---: | | require | O | O | O | O | # Module The `require` function is always available there is no need to import `module` explicitly. ### require(id) * `id` {string} Module name to be loaded. Loads the module named `id`. **Example** ```js var assert = require('assert'); assert.equal(2, 2); ``` ### require.cache * {object} Module map to be loaded. Modules are cached in this object when they are required. By deleting a key value from this object, the next require will reload the module. **Loading a module** If a native module named `id` exists, load it and return. (_Native module:_ which module came from the IoT.js itself) `require` function searches for modules in the following order: 1. `$NODE_PRIORITIZED_PATH` if present. 2. `node_modules` folder under current working directory. 3. `$NODE_PATH` if present. 4. `$HOME/node_modules`. For each directory in search paths above: - If a file `id` exists, load it and return. - If a file `id.js` exists, load it and retun. - If a directory `id` exists, module system consider the directory as a package: - If `id/package.json` contains **main** property, load the file named **main** property. - If `id/package.json` exists, but neither the **main** property nor the file named **main** property exist, load `index.js`. ### require.main * accessing the main module When a file is run directly, `require.main` is set to its module. That means that it is possible to determine whether a file has been run directly by testing `require.main === module`. For a file foo.js, this will be true if run via cmd directly, but false if run by `require('./foo')`, because `module` object is set to the `foo` module but `require.main` is still your entry file module. So you can get the entry point of the current application from checking `require.main.filename` anywhere.