## Destructuring assignment
-If you are using CoffeeScript or Babel, you can also use
+As of 0.37, you can use
[destructuring assignment][destructuring-assignment] to make it easier to use
-built-in modules:
+built-in modules.
+
+```javascript
+const {app, BrowserWindow} = require('electron');
+```
+
+If you need the entire `electron` module, you can require it and then using
+destructuring to access the individual modules from `electron`.
```javascript
-const {app, BrowserWindow} = require('electron')
+const electron = require('electron');
+const {app, BrowserWindow} = electron;
```
-However if you are using plain JavaScript, you have to wait until Chrome fully
-supports ES6.
+This is equivalent to the following code:
+
+```javascript
+const electron = require('electron');
+const app = electron.app;
+const BrowserWindow = electron.BrowserWindow;
+```
- ## Disable old styles of using built-in modules
-
- Before v0.35.0, all built-in modules have to be used in the form of
- `require('module-name')`, though it has [many disadvantages][issue-387], we are
- still supporting it for compatibility with old apps.
-
- To disable the old styles completely, you can set the
- `ELECTRON_HIDE_INTERNAL_MODULES` environment variable:
-
- ```javascript
- process.env.ELECTRON_HIDE_INTERNAL_MODULES = 'true'
- ```
-
- Or call the `hideInternalModules` API:
-
- ```javascript
- require('electron').hideInternalModules();
- ```
-
[gui]: https://en.wikipedia.org/wiki/Graphical_user_interface
[destructuring-assignment]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
[issue-387]: https://github.com/electron/electron/issues/387
const app = remote.require('electron').app
const BrowserWindow = remote.require('electron').BrowserWindow
+const isCI = remote.getGlobal('isCi')
describe('electron module', function () {
- it('allows old style require by default', function () {
- require('shell')
- })
-
- it('can prevent exposing internal modules to require', function (done) {
- const electron = require('electron')
- const clipboard = require('clipboard')
- assert.equal(typeof clipboard, 'object')
- electron.hideInternalModules()
- try {
+ it('does not expose internal modules to require', function () {
+ assert.throws(function () {
require('clipboard')
- } catch (err) {
- assert.equal(err.message, "Cannot find module 'clipboard'")
- done()
- }
+ }, /Cannot find module 'clipboard'/)
})
})