Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack 带sqlite3和网页包的电子包装机_Webpack_Sqlite_Electron_Electron Packager - Fatal编程技术网

Webpack 带sqlite3和网页包的电子包装机

Webpack 带sqlite3和网页包的电子包装机,webpack,sqlite,electron,electron-packager,Webpack,Sqlite,Electron,Electron Packager,我正在制作一个小应用程序,它使用 开发阶段一切正常。但是当我过去打包应用程序时,sqlite3不再工作了 控制台显示异常:找不到模块“sqlite3”。 这是我的渲染器配置: return { target: 'electron-renderer', mode: argv.production ? 'production' : 'development', context: paths.root, devtool: !argv.p

我正在制作一个小应用程序,它使用

开发阶段一切正常。但是当我过去打包应用程序时,
sqlite3
不再工作了

控制台显示异常:找不到模块“sqlite3”

这是我的渲染器配置:

return {
        target: 'electron-renderer',
        mode: argv.production ? 'production' : 'development',
        context: paths.root,
        devtool: !argv.production ? 'source-map' : false,
        entry: {
            'app': path.resolve(paths.app, 'app.js')
        },
        optimization: {
            runtimeChunk: false,
            splitChunks: {
                chunks: 'all',
                cacheGroups: {
                    default: {
                        enforce: true,
                        priority: 1
                    },
                    vendors: {
                        test: /[\\/]node_modules[\\/]/,
                        priority: 2,
                        name: 'vendors',
                        enforce: true,
                        chunks: 'async'
                    }
                }
            }
        },
        module: {
            rules: require('./rule')(paths, argv).get()
        },
        plugins: require('./plugin')(paths, argv).get(),
        output: {
            path: paths.dist,
            filename: 'app.bundled.js'
        },
        resolve: {
            // Add `.ts` and `.tsx` as a resolvable extension.
            extensions: [".ts", ".tsx", ".js"],
            alias: {
                // summernote: codemirror
                'CodeMirror': 'codemirror',
            }
        },
        watch: !argv.production,
        watchOptions: {
            poll: false
        },
        externals: {
            sqlite3: 'commonjs sqlite3'
        }
    };
这是属于渲染器进程的文件,其中包括
sqlite3

const typeorm = require('typeorm');
const EntitySchema = typeorm.EntitySchema;
const path = require('path');
const electron = require('electron');
require('sqlite3');

module.exports = (ngModule) => {
    ngModule.service('$db', (toastr) => {

        //#region Properties

        // Instance of database connection
        let dbConnection = null;

        //#endregion

        let out = {

            //#region Methods
                if (dbConnection == null || forceReinitialize) {
                    // Build a absolute path to database.
                    const appPath = electron.remote.app.getAppPath();
                    const dbPath = path.join(appPath, 'assets/db/PersonalCv.db');
                    return typeorm
                        .createConnection({
                            type: "sqlite",
                            database: dbPath,
                            synchronize: false,
                            entities: [
                                new EntitySchema(require('../models/entities/user')),
                                new EntitySchema(require('../models/entities/user-decription')),
                                new EntitySchema(require('../models/entities/skill-category')),
                                new EntitySchema(require('../models/entities/skill')),
                                new EntitySchema(require('../models/entities/personal-skill')),
                                new EntitySchema(require('../models/entities/project')),
                                new EntitySchema(require('../models/entities/project-skill')),
                                new EntitySchema(require('../models/entities/project-responsibility')),
                                new EntitySchema(require('../models/entities/responsibility'))
                            ]
                        })
                        .then((connection) => {
                            dbConnection = connection;
                            return dbConnection;
                        })
                        .catch((error) => {
                            toastr.error(error);
                            throw error;
                        });
                }

                return new Promise(resolve => {
                    resolve(dbConnection);
                });
            },

            /*
            * Get repository by using name (table name)
            * */
            getRepository: (name) => {
                return out
                    .getConnection()
                    .then((connection) => {
                        return connection.getRepository(name);
                    });
            }

            //#endregion
        };

        return out;
    });
};
这是我的情况下,任何人需要进一步的信息

有人能帮我吗


谢谢,sqlite3是一个本机模块,具体取决于系统架构。 Electron packager不做任何特殊的事情来帮助您编译本机模块

因此,您可以使用纯JS SQLite包,如

或者试试electron builder:它有一个“postinstall”脚本


另请参见:

在经历了
electron packager
electron builder
的一些问答之后。我找到了一个解决方案,使
sqlite3
webpack
一起工作

webpack.config.js
中,我添加了:

externals: {
    sqlite3: 'commonjs sqlite3'
}

我没有使用
electron-packager
,而是使用
electron-builder
来构建我的应用程序。在
build
配置中,我将
sqlite3
模块复制到
dist
文件夹中

我正在使用webpack捆绑我的源代码。我能用
electron builder
做些什么来处理
sqlite3
?谢谢,我的项目中缺少的部分是
commonjs
,我只有
sqlite3
,没有成功,但是添加
commonjs sqlite3
,sqlite正在工作