webpack sequelize,sqlite3报错cannot find module sqlite3

Webpack sequelize, sqlite3 error cannot find module sqlite3

我尝试将 sequelize 和 sqlite3 与 electron 一起使用,但在与 webpack 一起使用时遇到问题。 要测试我描述中提供的项目,请在

之前执行 npm install

示例 1:我尝试了两个项目,其中一个没有使用 webpack,并且运行良好:sqlite3 正确加载并将数据写入数据库。 https://www.dropbox.com/sh/yag6690rnc5l9y0/AAA0WeKvnHxhxY4qtxhHONWma?dl=0

npm start will launch node_modules/.bin/electron . 

它启动使用 index.js 文件的 index.html:

示例2: 我使用webpack编译项目,因为我使用的是ES6语法(在提供的示例中语法不是ES6 , 它只是重复使用与示例 1) 中相同的文件。 https://www.dropbox.com/sh/g38305knvrpdala/AAANbVBXlc-scBrzdCQTqqI7a?dl=0

npm start 将编译 index.js 入口点并输出一个 bundle.js 文件,供 index.html 用于电子应用程序。

当我启动第二个例子时,index.html加载了用webpack编译的bundle.js文件我有以下错误:

要查看ERRRRR issss,

不像 link 提供的那样,它不是关于将 webpack 与 electron 一起使用。 link 是我的示例 1 项目,对我来说一切都在第一次尝试时完美运行,无需做任何其他操作。但是我尝试了为我的 webpack 示例 2 提供的所有解决方案,但没有任何效果。

我不明白为什么,在基本示例中,当直接在 html 中包含 index.js 文件时效果很好,但是当由 webpack 处理时,包含在同一个 html 它不起作用?我在这里错过了什么吗?

不使用 webpack 编译一切正常? WebPack 让我编写 ES6 并将所有东西拆分成一个包,但是如果我手动重写所有文件并只使用一个文件它会工作......所以从我的角度来看,这里更像是一个 webpack behave/config 问题。

我终于找到了解决办法,问题是像sqlite这样的node_modules文件夹被捆绑在了bundle.js中。

下面的 link 对此提供了很好的解释,并解释了后端与 webpack 的配置,并防止 node_modules 在使用 require 指令时被捆绑。

http://jlongster.com/Backend-Apps-with-Webpack--Part-I

解决我问题的代码是:

var nodeModules = {};
fs.readdirSync('node_modules')
  .filter(function(x) {
    return ['.bin'].indexOf(x) === -1;
  })
  .forEach(function(mod) {
    nodeModules[mod] = 'commonjs ' + mod;
  });

然后我将 nodeModules 添加到 webpack 的外部配置

module.exports = {

module: {
  .....
  externals: [nodeModules]
};

如果我设置 externals : ["sequelize"]

它也适用于我