2017-01-30 11 views
2

Electron(以前のAtom Shell)を使用してアプリケーションを作成しようとしています。このアプリケーションはAngularJSアプリケーションをラップし、nodejsで作成されたエンドポイントと対話してHTMLコンテンツを編集および保存します。私は問題なしでアプリケーションを作成することができます。電子クローズボタンが機能しない

電子から「/ saveContent」にアクセスしようとすると、閉じるボタン(Windowsの右上にある閉じる)が反応しなくなりますが、最小化と最大化は問題なく機能します。電子を介して他のエンドポイントにアクセスすると、この問題は発生しません。私は両方の同期ファイルの書き込みを試みてきました。だから私はmain.jsの "/ saveContent"が問題の原因だと仮定します。

「Windowsタスクマネージャ」でnode.exeを終了すると、アプリケーション全体が閉じられます。

私は「/ saveContent」内のファイル書き込みコードをコメントすると、電子閉じるボタンが応答しなくなることはありません

$scope.editPage = function() { 
      $http({method: "GET", 
       url: "/editPage", 
       params: {editURL: $location.path()} 
      }).then(function success(response) { 
       //var result = JSON.parse(response.data); 
       //console.log("HTTP Success "+response.data.path); 
       $scope.showEditor = true; 
       $scope.editURL = response.data.path; 
       tinymce.get('contentEditor').setContent(response.data.content); 
      }, function error(response) { 
       console.log("HTTP Error " + response.statusText); 
      }); 
     }; 

以下

'use strict'; 
var fs = require("fs"); 
const util = require('util') 

var cheerio = require("cheerio"); 

var express = require('express'); 
var exapp = express(); 

var bodyParser = require('body-parser'); 
var urlencodedParser = bodyParser.urlencoded({extended: false}); 
exapp.use(bodyParser.json()); 

const electron = require('electron'); 
const app = electron.app; // Module to control application life. 
const BrowserWindow = electron.BrowserWindow; // Module to create native browser window. 
const path = require('path') 
const url = require('url') 
var mainWindow = null; 



app.on('ready', function() { 
    mainWindow = new BrowserWindow({width: 1280, height: 900, title: "2018JL", "nodeIntegration":false}); 
    //mainWindow.loadURL(__dirname + '/app/index.html'); 
    mainWindow.loadURL('http://localhost:5001/'); 

    mainWindow.on('closed', function() { 
    mainWindow = null; 
    }); 
}); 

app.on('window-all-closed', function() { 
    if (process.platform != 'darwin') { 
     app.quit(); 
    } 
}); 


exapp.get('/editPage', function(req,res){ 
    if(req){ 
    //console.log("req.query.editURL "+ req.query.editURL); 
     var url = req.query.editURL; 
     var editURL = path.join(__dirname + '/app/views'+ url+".html"); 

     fs.exists(editURL, function(fileok){ 
      if(fileok){ 
      fs.readFile(editURL, 'utf8', function (err, data) { 
       if (err) { 
        console.log("error.... "+ err); 
        return console.error(err); 
       } 
       //console.log("data "+ editURL); 
       res.send(JSON.stringify({path:editURL, content:data})); 
      }); 
      }else{ 
       console.log("file not found"); 
      } 
     }); 
    } 
}); 

exapp.post('/saveContent', function (req, res) { 
    //console.log(util.inspect(req, false, null)) 
    if (req) { 
     //console.log(req.query.url + " ------ " + req.query.content); 

     var $ = cheerio.load(req.query.content); 
     var htmlContent = $('body').children(); 

     console.log('htmlContent '+htmlContent); 

     fs.writeFile(req.query.url, htmlContent, function(err) { 
      if (err) { 
       res.send("Error"); 
      } 
      console.log("End of write file"); 
      res.send("success"); 
     }); 
    } 
    console.log("End of function ....."); 
}); 

exapp.get('/test', function (req, res) { 
    res.send("Test success "); 
}); 


exapp.use(express.static(__dirname + '/app')); 
exapp.listen(process.env.PORT || 5001); 

クライアントコード下のメインプロセスコードを持っています。

答えて

関連する問題