Javascript 网页包续集,sqlite3错误找不到模块sqlite3
我尝试将sequelize和sqlite3与electron一起使用,但在将其与webpack一起使用时遇到了问题。 要测试我的说明中提供的项目,请在 示例1:我尝试了两个项目,一个没有webpack,效果很好:sqlite3正确加载并将数据写入数据库 它将启动使用index.js文件的index.html: 示例2:我使用webpack编译项目,因为我使用ES6语法(在提供的示例中,语法不是ES6,只是为了重用与示例1相同的文件)。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
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,如本文所述。()
如果不使用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]
};