Javascript 网页包续集,sqlite3错误找不到模块sqlite3

Javascript 网页包续集,sqlite3错误找不到模块sqlite3,javascript,sqlite,webpack,electron,Javascript,Sqlite,Webpack,Electron,我尝试将sequelize和sqlite3与electron一起使用,但在将其与webpack一起使用时遇到了问题。 要测试我的说明中提供的项目,请在 示例1:我尝试了两个项目,一个没有webpack,效果很好:sqlite3正确加载并将数据写入数据库 它将启动使用index.js文件的index.html: 示例2:我使用webpack编译项目,因为我使用ES6语法(在提供的示例中,语法不是ES6,只是为了重用与示例1相同的文件)。 npm start将编译index.js入口点并输出i

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

示例1:我尝试了两个项目,一个没有webpack,效果很好:sqlite3正确加载并将数据写入数据库

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

示例2:我使用webpack编译项目,因为我使用ES6语法(在提供的示例中,语法不是ES6,只是为了重用与示例1相同的文件)。

npm start
将编译index.js入口点并输出index.html用于electron应用程序的bundle.js文件

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

要查看ERRRRR isss,

  • 我在文件节点_modules/sequelize/lib/dialogs/sqlite/connection-manager.js第22行中添加了一个console.log,如本文所述。()
与提供的链接不同,该链接不是关于使用带有electron的网页包。链接是我的示例1项目,对我来说,在第一次尝试时,一切都完美无瑕。但我尝试了为我的网页示例2提供的所有解决方案,但没有任何效果

我不明白为什么,在基本示例中,当直接将index.js文件包含在html中时,它工作得很好,但当通过webpack处理时,以及包含在同一html中时,它不工作?我是不是遗漏了什么


如果不使用webpack编译,一切都正常吗?WebPack允许我编写ES6并将所有内容拆分为一个包,但如果我手动重写所有文件并仅使用一个文件,它将工作。。。因此,在我看来,这更多的是一个webpack behave/config问题。

我最终找到了解决方案,问题是像sqlite这样的节点模块文件夹被捆绑在bundle.js中

下面的链接对此提供了很好的解释,并解释了webpack后端的配置,防止在使用require指令时绑定节点_模块

解决我的问题的代码是:

var nodeModules = {};
fs.readdirSync('node_modules')
  .filter(function(x) {
    return ['.bin'].indexOf(x) === -1;
  })
  .forEach(function(mod) {
    nodeModules[mod] = 'commonjs ' + mod;
  });
然后,我将节点模块添加到网页包的外部配置中

module.exports = {

module: {
  .....
  externals: [nodeModules]
};
如果我设置
externals:[“sequelize”]

module.exports = {

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