电子关闭按钮不起作用

2024-04-08

我正在尝试使用 Electron(以前称为 Atom Shell)创建一个应用程序。该应用程序包装了 AngularJS 应用程序,并与在 Node.js 中创建的端点交互以编辑和保存 HTML 内容。我能够毫无问题地创建应用程序。

当我尝试从电子访问“/saveContent”时,导致关闭按钮(Windows 在右上角关闭)变得无响应,但是最小化和最大化工作正常,没有问题。如果我通过电子访问任何其他端点,则不会出现此问题。我也尝试过同步文件写入和其他方式。所以我认为 main.js 中的“/saveContent”是问题的原因。

如果我在“Windows 任务管理器”中结束 node.exe,则会关闭整个应用程序。

我有下面的主要流程代码

'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);

客户端代码如下

$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);
            });
        };

在“/saveContent”中注释文件写入代码不会导致电子关闭按钮变得无响应。


我将 mainWindow 的代码替换为接近如下并且工作正常

    mainWindow.on('close', function(e) { 
        e.preventDefault();
        mainWindow.destroy();
    });

https://github.com/electron/electron/blob/master/docs/api/browser-window.md#windestroy https://github.com/electron/electron/blob/master/docs/api/browser-window.md#windestroy

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电子关闭按钮不起作用 的相关文章

随机推荐

  • 使用 serde 序列化时如何按字母顺序对字段进行排序?

    我有一个 API 要求对象的字段按字母顺序排序 因为必须对结构进行哈希处理 在 Java Jackson 中 您可以在序列化器中设置一个标志 MapperFeature SORT PROPERTIES ALPHABETICALLY 我在 S
  • 聚合物全局变量

    我正在开发一个 Polymer 应用程序 它从 RESTful API 中提取数据并使用它来构建界面 我在概念上坚持的一个特定领域是单态模式的实现 描述于http www polymer project org docs polymer p
  • BigQueryTable.InsertRows 间歇性地抛出未找到表 xx

    我们只是删除表 创建表 然后使用插入数据 BigQueryTable table try table dataset GetTable tableName table Delete catch finally table dataset C
  • 如何在 .NET Framework 4.7.1 中使用 Azure KeyVault 覆盖 Web.config 值

    如何在 ASP NET Framework 4 7 1 WebForms 应用程序中实现 Microsoft 的 Azure KeyVault 以覆盖中的值web config使用 KeyVault 中的值 我确实看到参考资料表明我们需要最
  • Youtube iOS 播放器帮助程序库无法正常工作

    我尝试实现 youtube ios player helper 库来在我的应用程序中播放视频 我可以准备好播放器并加载视频 并且可以显示起始缩略图 但是 当我尝试播放视频时 却收到以下错误消息 SendDelegateMessage NSI
  • 通过尾指针添加到链表,无需 3 级间接

    我正在开发一个需要实现链表的项目 在开始这个项目之前 我正在回顾创建链表的经典方法 我意识到过去我一直通过head遍历列表直到到达空指针的指针 我发现没有必要这样做 并以涉及的方式实现它tail指针 但我能想到的唯一方法是涉及三重指针或全局
  • Jquery Multiselect:如何知道选择/取消选择哪个值

    我有多选下拉菜单 每当有选择或取消选择时 我都需要获取该值 我正在使用更改事件 但很难确定选择 取消选择了哪个选项 all options var all multiple each function i selected all i se
  • 如何在 C# 中附加 xml 文件?

    我正在为一个简单进程添加跟踪 以进行审计 我将其构建为 exe 并在调度程序中设置为每 10 分钟运行一次 我想让应用程序将结果输出到 xml 文件中 如果文件存在 则打开并向其追加数据 如果不存在 我想创建一个新的 xml 文件 该文件将
  • C/C++ 中的动态位向量

    我正在寻找一个可以使用的现成的 C 或 C 动态位向量 不幸的是 由于各种原因 我目前无法使用 BoostT 库 std bitvector 看起来很有希望 但它是模板化的 所以我无法动态设置位向量的长度 有人可以建议吗 谢谢 您不必仅仅为
  • 安装SSDT(SQL Server数据工具)时出错

    我在安装 SQL Server Data Tools for Visual Studio 2017 过程中遇到问题 我收到以下错误 已翻译 The requested meta file operation is not supported
  • SwiftUI:两个并排列表和一个导航视图出现意外行为

    我的屏幕有两个List并排 在一个NavigationView 布局渲染正确 我可以独立滚动两个列表 问题是 当我滚动第一个列表时 它位于导航栏后面 而没有触发对其应用背景颜色的效果 下面的 gif 展示了正在发生的事情 这是我用于此视图的
  • request.getSession() 在 sendRedirect() 之后创建新会话

    我们正在开发旅行应用程序 通过这个航班 可以预订酒店 巴士票 它是基于产品的应用程序 我们有近 25 个客户 3 个客户正在使用 其余仍在开发中 我们为所有客户维护一台服务器 一台服务器 应用程序 多个客户端是我的应用程序中的伟大成就 但问
  • 使用 jq 将 JSON 对象转换为 Prometheus 指标格式

    考虑一个 JSON 对象 例如 foo 42 baz 12 bar label1 value1 12 34 建造者jq https github com stedolan jq使用一些数据源 实际的键名称及其数量可能会有所不同 但结果将始终
  • HAL_Delay() 陷入无限循环

    我被 HAL Delay 函数困住了 当我调用此函数 HAL Delay 时 控制陷入无限循环 在寻找问题的过程中 我发现了这个 http www openstm32 org forumthread2145 threadId2146 htt
  • 在Python中的同一个图上绘制多个位置的年度数据[重复]

    这个问题在这里已经有答案了 我有几个站 20 年的数据框 我想以某种方式绘制它 x 轴是年份 y 轴是观测值 线条的颜色显示位置 station year observations 0 3939 2000 0 346518 1 3939 2
  • 通过 UDF 获取 Google 搜索第一个结果[重复]

    这个问题在这里已经有答案了 Santosh 对以下问题有一个很棒的答案 vba 代码 link https stackoverflow com questions 17495644 using vba in excel to google
  • 将 .NET 事件公开给 COM?

    我一直在尝试向 VBA 客户端公开并触发事件 到目前为止 在 VBA 客户端 事件已公开 并且我看到方法事件处理方法已添加到我的模块类中 但是 VBA 事件处理方法不会触发 由于某种原因 调试时事件为空 同步修改我的代码也没有帮助 作为记录
  • 文件锁如何工作?

    我一直在尝试使用FileLock获得对文件的独占访问权限 以便 删除它 重命名它 写信给它 因为在 Windows 上 至少 您似乎无法删除 重命名或写入已在使用的文件 我写的代码看起来像这样 import java io File imp
  • Spring security 已登录用户的重定向问题

    在使用我的基于 GWT 的 Web 应用程序实现 Spring Security 时 我找到 一切都按预期正常工作 除了以下事实 我打开了 login jsp 并给出了有效的用户登录凭据 提交后 成功重定向到主页 现在 当我在地址栏中编辑
  • 电子关闭按钮不起作用

    我正在尝试使用 Electron 以前称为 Atom Shell 创建一个应用程序 该应用程序包装了 AngularJS 应用程序 并与在 Node js 中创建的端点交互以编辑和保存 HTML 内容 我能够毫无问题地创建应用程序 当我尝试