gpt4 book ai didi

javascript - 我的论文项目 : electron, express 和 sqlite3 需要帮助

转载 作者:行者123 更新时间:2023-11-28 05:15:38 26 4
gpt4 key购买 nike

我目前正在研究我的论文项目,其中包括一款面向我所在城市的公立和私立学校的教育桌面视频游戏。

我也非常喜欢 Electron ,所以我认为让我的应用程序使用它是一个好主意,但是当问题开始时它就在这里。我的大学要求所有应用程序必须使用关系数据库(SQL),而不是像 MongoDB 这样的非关系数据库。由于数据库相对较小,所以我选择了 SQLite。

由于某种原因,我开始遇到某个错误:

C:\Users\Alejandro\Documents\Proyectos\express\node_modules\sqlite3\lib\binding\electron-v1.4-win32-ia32\node_sqlite3.node

经过一些研究,我发现原因是因为 Electron 在客户端执行,而数据库只能在服务器端工作,为了解决这个问题,我在我的应用程序上安装了 Express,以便在 Electron 执行时在后台执行服务器客户端(本地客户端-服务器桌面应用程序)。

经过一些编码后,结果如下:

  • Main.js( Electron 代码更改)

    const express = require('./resources/express')
    const electron = require('electron')

    // Module to control application life.
    const app = electron.app

    // Module to create native browser window.
    const BrowserWindow = electron.BrowserWindow

    const path = require('path')
    const url = require('url')

    // 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 mainWindow

    function createWindow () {
    // Create the browser window.
    mainWindow = new BrowserWindow({width: 800, height: 600})
    // and load the index.html of the app.
    mainWindow.loadURL('http://localhost:8080/')

    // Emitted when the window is closed.

    mainWindow.on('closed', function () {
    console.log('app server is closing')
    express.closeServer()
    mainWindow = null
    })
    }
  • Express.js(Express 代码):

    const http = require('http')
    const express = require('express')
    const dbmanager = require('./dbmanager.js')

    app = express()

    app.set('view engine', 'pug')

    app.get('/',function(request, response){
    console.log('server started :D')
    response.end()
    })

    app.get('/checktable',function(request, response){
    dbmanager.createTable()
    response.redirect('/receive')
    })

    app.get('/receive',function(request, response){
    dbmanager.selectAll(function(err,data){
    data.forEach(function(row){
    console.log(row.id + " " + row.name + "Edad: " + row.age)
    })
    response.render('index', { title: 'Usuario', message: data[0].name + " " + data[0].last })
    response.end()
    })
    })

    var server = http.createServer(app).listen(8080)

    var serverManager = {}

    serverManager.closeServer = function(){// This executes
    console.log('This is executing')
    console.log('Server should close now')
    server.close()
    }

    module.exports = serverManager
  • dbmanager.js(SQLite 查询)

    var sqlite3 = require('sqlite3').verbose()
    var db = new sqlite3.Database('memory')

    var queryManager = {}

    queryManager.createTable = function(){
    db.run("CREATE TABLE IF NOT EXISTS students (id int, name TEXT,last TEXT, age int)")
    }

    queryManager.deleteTable = function(){
    db.run('DROP TABLE students')
    }

    queryManager.insertStudent = function(student){
    var stmt = db.prepare("INSERT INTO students VALUES (?,?,?,?)")
    stmt.run(student.id,student.name,student.last,student.age)
    stmt.finalize()
    console.log('Insert Successful')
    }

    queryManager.selectAll = function(callback){
    db.all('SELECT * FROM students', function(err,rows){
    if(err)
    {
    throw err;
    }
    else
    {
    callback(null, rows);
    }
    })
    }

    module.exports= queryManager
  • Index.pug( View )

     html
    head
    title= title
    body
    table#table
    h1= message

在尝试执行整个应用程序之前,我尝试只执行服务器并且它有效。

我修改了“Electron ”中的 npm 起始行。到“Electron . && node ./resources/express.js”,这样我就可以执行客户端和服务器。

当时我评论了与 dbmanager.js 相关的所有行,以测试客户端和服务器是否正常工作。

需要在应用程序窗口关闭时关闭服务器,我创建了一个函数来在调用窗口关闭函数时关闭服务器,但事实并非如此。

这是第一个问题。当我撤消 dbmanager 行上的注释时出现第二个问题,我得到与以前相同的错误:

 'C:\Users\Alejandro\Documents\Proyectos\express\node_modules\sqlite3\lib\binding\electron-v1.4-win32-ia32\node_sqlite3.node'

我做错了什么吗?拜托,我真的需要帮助。

最佳答案

您正在与您的 Electron 应用程序在同一台计算机上启动 Express 服务器,如果您的服务器可以访问本地数据库,那么是什么让您认为您的应用程序不能?您不需要 Express 服务器。要在 Electron 应用程序中使用 sqlite3 模块,您只需使用 documented approaches 之一重建它以针对特定的 Electron 版本。 .

关于javascript - 我的论文项目 : electron, express 和 sqlite3 需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40998200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com