- Electron version: v1.4.0
- Operating system: macOS 10.11.6

Given the following `main.js`:

``` js
const {powerMonitor} = require('electron')
```

I get the following exception:

```
$ electron .
App threw an error during load
TypeError: Cannot match against 'undefined' or 'null'.
    at Object.<anonymous> (/usr/local/lib/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/api/power-monitor.js:2:46)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)
    at Module.require (module.js:483:17)
    at require (internal/module.js:20:19)
    at Object.get [as powerMonitor] (/usr/local/lib/node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/browser/api/exports/electron.js:65:14)
    at Object.<anonymous> (electron-test/main.js:1:87)
```

atom/browser/api/atom_api_screen.cc
v8::Isolate* isolate, v8::Local<v8::FunctionTemplate> prototype) {
  prototype->SetClassName(mate::StringToV8(isolate, "Screen"));
  mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate())
      .SetMethod("getCursorScreenPoint", &Screen::GetCursorScreenPoint)
      .SetMethod("getPrimaryDisplay", &Screen::GetPrimaryDisplay)
      .SetMethod("getAllDisplays", &Screen::GetAllDisplays)
      .SetMethod("getDisplayNearestPoint", &Screen::GetDisplayNearestPoint)
      .SetMethod("getDisplayMatching", &Screen::GetDisplayMatching);
}
}  
}  
namespace {
using atom::api::Screen;
void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
                v8::Local<v8::Context> context, void* priv) {
  v8::Isolate* isolate = context->GetIsolate();
  mate::Dictionary dict(isolate, exports);
  dict.Set("screen", Screen::Create(isolate));
  dict.Set("Screen", Screen::GetConstructor(isolate)->GetFunction());
}
}  
NODE_MODULE_CONTEXT_AWARE_BUILTIN(atom_common_screen, Initialize)