electron 电子服务器端使用express

gc0ot86w  于 9个月前  发布在  Electron
关注(0)|答案(1)|浏览(85)

我试图创建一个服务器端的电子为了保持投入。
这是我的脚本,我得到的输入,并将其发送到数据库;

$("#confirm").click(function () {
            $.post("/addcustomerpost",
                { 
                    opcode: document.querySelector('#opcode').value,
                    cusname: document.querySelector('#cusname').value,
                },
                    function (data, status) {
                      if(data[0].code_received == "" || data[0].cusname_received == "") { 

                    $(".alert").remove();
                    var errorMessage = $('<div class="alert alert-danger text-center" role="alert"                      style="font-size: 25px;">CANNOT BE EMPTY!</div>');

                    
                    errorMessage.css({
                        position: "fixed",
                        top: 10,
                        right: 690,
                        width: "20%",
                        "z-index": 9999,
                    });

                    
                    $("body").append(errorMessage);

                    
                    setTimeout(function() {
                        errorMessage.remove();
                    }, 3000); 
                            
                        }
                        else {
                        if(status === "success") alert("INFORMATION SAVED!");
                        else  alert("ERROR OCCURRED!");
                        }
                        
                    });
        });

它需要访问appExpress.post(“/addcustomerpost”,...),这里是main.js ;

// main.js
const { app, BrowserWindow } = require('electron');

const express = require('express');
const appExpress = express();
appExpress.set('view engine', 'ejs');

const port = 5500;

process.env.PWD = process.cwd();
appExpress.use(express.static(process.env.PWD + '/images'));

appExpress.use(express.static('/'));
appExpress.use(express.urlencoded({extended:true}));

const path = require('path');

appExpress.post("/addcustomerpost",(req,res) => {

    if(req.body.opcode == "" || req.body.cusname == "") {
      console.log("not valid customer"); 
      res.json([{ 
        code_received: req.body.opcode,
        cusname_received: req.body.cusname,
      }]); 
    
    }
    else {
    res.json([{  // Just an response
      code_received: req.body.opcode,
      cusname_received: req.body.cusname,
    }]); 
    console.log("test_log"); //db operations will be here
    }
    
    });

let mainWindow;

app.on('ready', () => {

    // start express server
    const server = appExpress.listen(port, () => {
        console.log(`Server listening on port ${port}`);
      });

  mainWindow = new BrowserWindow({
    width: 1920,
    height: 1080,
    webPreferences: {
      nodeIntegration: true
    }
  });

  mainWindow.loadFile('entry.html');

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

 
});

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

然而,当我提交输入时,它说;无法加载资源:net::ERR_FILE_NOT_FOUND /C:/addcustomerpost:1
你能帮帮我吗?
我的意思是,我可以在我的网络应用程序nodejs中做到这一点,但不能在电子版中管理它。

rjzwgtxy

rjzwgtxy1#

您正在请求/addcustomerpost,这是根URL的相对路径。
由于电子应用程序是桌面应用程序,因此它们没有定义的根路径来使用Web应用程序中的相对路径。由于这个原因,您的应用程序正在尝试访问路径C:/addcustomerpost,这是文件系统路径。
要解决这个问题,您需要在URL中指定协议和域,格式如下:http://domain:port/addcustomerpost。如果您在本地环境中工作,则URL将为http://localhost:port/addcustomerpost

相关问题