如何为 NW.JS 本地桌面应用程序创建本地服务器连接?

Posted

技术标签:

【中文标题】如何为 NW.JS 本地桌面应用程序创建本地服务器连接?【英文标题】:How to create a local server connection for a NW.JS local desktop application? 【发布时间】:2021-05-21 23:30:52 【问题描述】:

我是 Node.JS 和 NW.JS 的新手,这是我的第一个项目,一个桌面应用程序演示。我制作了一个基本表单,并且正在尝试执行本地应用程序,因此我想将我的 Web 服务器变成本地服务器连接,以将表单数据从我的应用程序发送到 mysql Workbench 中的数据库。此外,如果有人对简化此代码有任何建议,我们也欢迎。


*编辑

好的,显然我不需要服务器连接(app.js 和 router.js 都不需要)只需要 db.js 用于数据库连接,我现在要做的就是将我的 index.js 变成jQuery 代码。有人可以帮我吗?

另外,我是 *** 的新手。我必须更改标题吗?有什么改进这篇文章的建议吗?


表单提交代码 (index.js)exports.save 代码不会将表单数据插入数据库。

var enviar = document.querySelector('.enviar');

enviar.addEventListener('click',function()
    var fecha = document.getElementById('fecha').value;
    console.log(fecha);
    if(!fecha)
        alert("Error! Por favor, introdusca la fecha.");
     else 
        
        const conexion = require('./db');

        exports.save = (req, res)=>
            var aleatorio = Math.random();
            var alString = aleatorio.toString();
            var alStringFix = alString.substr(2,3);
        
            var idfecha = new Date();
            var numfecha = [
                idfecha.getMinutes(),
                idfecha.getSeconds(),
                idfecha.getMilliseconds()
            ];

            var numero = numfecha.join("")+parseInt(alStringFix);
            const tipo = req.body.tipo;
            const fecha = req.body.fecha+':'+idfecha.getSeconds()+'.'+idfecha.getMilliseconds();
            const comentario = req.body.comentario;

            console.log(numero+" - "+tipo+' - '+fecha+' - '+comentario);

            conexion.query('INSERT INTO cuentas_evento SET ?',
            numero_evento: numero, tipo_evento: tipo, fecha_evento: fecha, comentario: comentario,
            (error, resultados)=>
                if(error)
                    throw error;
                 else 
                    res.redirect('/');
                
            );
        
        alert("Formulario Enviado!");
        location.reload();
        return false;
    
);

MySQL 连接 (db.js)

const mysql = require('mysql');

const conexion = mysql.createConnection(
    host:       'localhost',
    database:   'test',
    user:       'root',
    password:   'mypassword'
);

conexion.connect(function(error)
    if (error)
        throw error;
     else
        console.log('Conexión Exitosa!');
    
);

module.exports = conexion;

*不需要服务器连接

路由器 (router.js)

const express = require('express');
const router = express.Router();

const conexion = require('./db');

router.get('/', (req,res)=>
    res.render('./index');
)

const crud = require('./crud');
router.post('/', crud.save);

module.exports = router;

APP (app.js)

const express = require('express');
const app = express();
const path = require('path');

app.use(express.urlencoded(extended:true));
app.use(express.json());

app.get('/', function(req, res) 
    res.sendFile(path.join(__dirname, 'index.html'));
);

app.use(express.static('public'));
app.use('/', require('./router'));

app.listen(3000, ()=>
    console.log('Servidor corriendo en http://localhost:3000');
);

【问题讨论】:

【参考方案1】:

我不确定您的代码是否存在问题。但如果问题出在您的设置上,您可以与这个简单的示例项目进行比较:

https://github.com/nwutils/nw-local-server-example

【讨论】:

我看了看,他们像我一样建立了服务器连接,他们在 NW.js 中使用 node-remote 远程运行它。他们将 package.json 中的“main”设置为 localhost:3000,并且 Express 正在返回 index.html,我已经这样做了。我可能没有正确详细说明,我想将该远程服务器转换为本地服务器,而无需在“main”中设置localhost:3000。 我编辑了我的帖子,我实际上不需要服务器连接,只需要数据库通信。 我希望它能够像使用 Node.js 连接到任何数据库一样工作。这是特定于 NW.js (github.com/nwjs/nw.js/wiki/Save-persistent-data-in-app) 的数据库内容的页面,但我认为在这里使用任何节点指南都可能有效。

以上是关于如何为 NW.JS 本地桌面应用程序创建本地服务器连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何为直播创建本地媒体服务器?

如何为我的 python 脚本创建本地网络服务器?

如何为本地托管的 wss:// 服务器创建自签名证书

如何为本地主机测试运行设置虚拟目录?

nw.js打包了远程的html网页但是网页修改后程序打开网页不变化

如何为通过 SSL 进行双向身份验证的本地测试创建客户端证书?