25095
おはようございます

electronでアプリを作る実験をしようと、こちらのサイトを参考に作ってみたのですが  
<http://qiita.com/nyanchu/items/15d514d9b9f87e5c0a29>

```

    'use strict'
    
    var app = require('app');
    // ウィンドウを作成するモジュール
    var BrowserWindow = require('browser-window');
    
    require('crash-reporter').start();
    
    // メインウィンドウはGCされないようにグローバル宣言
    var mainWindow = null;
    
    // 全てのウィンドウが閉じたら終了
    app.on('window-all-closed', function() {
     if (process.platform != 'darwin')
      app.quit();
    });
    
    // Electronの初期化完了後に実行
    app.on('ready', function() {
     // メイン画面の表示。ウィンドウの幅、高さを指定できる
     mainWindow = new BrowserWindow({width: 800, height: 600});
     mainWindow.loadURL('file://' + __dirname + '/index.html');
    
     // ウィンドウが閉じられたらアプリも終了
     mainWindow.on('closed', function() {
      mainWindow = null;
     });
    });
```

見事に以下のようなエラーが出て実行できません  
[![画像の説明をここに入力](https://i.stack.imgur.com/JitSX.png)](https://i.stack.imgur.com/JitSX.png)

ただ、公式に上がっている以下のコードだと実行できます

```

    const electron = require('electron');
    // Module to control application life.
    const {app} = electron;
    // Module to create native browser window.
    const {BrowserWindow} = electron;
    
    // Keep a global reference of the window object, if you don't, the window will
    // be closed automatically when the JavaScript object is garbage collected.
    let win;
    
    function createWindow() {
      // Create the browser window.
      win = new BrowserWindow({width: 800, height: 600});
    
      // and load the index.html of the app.
      win.loadURL(`file://${__dirname}/index.html`);
    
      // Open the DevTools.
      win.webContents.openDevTools();
    
      // Emitted when the window is closed.
      win.on('closed', () => {
        // Dereference the window object, usually you would store windows
        // in an array if your app supports multi windows, this is the time
        // when you should delete the corresponding element.
        win = null;
      });
    }
    
    // This method will be called when Electron has finished
    // initialization and is ready to create browser windows.
    // Some APIs can only be used after this event occurs.
    app.on('ready', createWindow);
    
    // Quit when all windows are closed.
    app.on('window-all-closed', () => {
      // On OS X it is common for applications and their menu bar
      // to stay active until the user quits explicitly with Cmd + Q
      if (process.platform !== 'darwin') {
        app.quit();
      }
    });
    
    app.on('activate', () => {
      // On OS X it's common to re-create a window in the app when the
      // dock icon is clicked and there are no other windows open.
      if (win === null) {
        createWindow();
      }
    });
```

私は今日初めて触ったので違いがまるでわからないのですが........  
なにがどう違うのでしょうか？  
なぜ上の方法ではうまくいかないのでしょうか？  
よろしくお願いいたします
CC BY-SA 3.0
2016-05-20T01:42:49.417
25007
2016-05-23T05:23:04.543
15418
question
electron
Electronで’cannot fiind module app’ と出て実行できません
v1.0.0あたりからelectron内蔵モジュールの呼び出し方が変わったからです。  
事前に今までの書き方とは変わるからね〜というアナウンスはありました。  
electronのv0.37.*などでは上記コードで動くはずです。  
正式に動かないようになったのはごく最近ですね。  
ブログ記事等ではこういった仕様の変更を受けても記事内容を修正せずにそのまま放置ということが多いので、どんなに優しい内容だろうと情報が古ければあてにしないほうが良いです。
CC BY-SA 3.0
2016-05-23T05:23:04.543
25095
2016-05-23T05:23:04.543
15603
25007
answer