Webpack sequelize,sqlite3错误找不到模块sqlite3

Aal*_*eks 2 javascript sqlite webpack electron

我尝试使用sequelize和sqlite3与电子,我在使用webpack时遇到问题.要测试我的描述中提供的项目npm install之前做过

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

npm start will launch node_modules/.bin/electron . 
Run Code Online (Sandbox Code Playgroud)

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

项目1结构

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

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

项目2结构

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

错误

要查看ERRRRR issss,

不同于提供的链接不是关于使用带电子的webpack.链接是我的示例1项目对我来说,一切都在第一次尝试完美,没有做更多的事情.但我尝试了为我的webpack示例2提供的每个解决方案,但没有任何作用.

我不明白为什么,在基本的例子中,只是直接在html中包含index.js文件它运行良好,但是当由webpack处理并且包含在同一个html中它不起作用?我错过了什么吗?

如果没有使用webpack编译,一切正常吗?WebPack让我编写ES6并将所有内容拆分成一个包但如果我手动重写所有文件并只使用一个文件就可以工作......所以从我的观点来看,这里更像是一个webpack behave/config问题.

Aal*_*eks 7

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

下面的链接提供了很好的解释,并解释了使用webpack后端的配置,并防止在使用require指令时捆绑node_modules.

http://jlong​​ster.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;
  });
Run Code Online (Sandbox Code Playgroud)

然后我将nodeModules添加到webpack的externals配置中

module.exports = {

module: {
  .....
  externals: [nodeModules]
};
Run Code Online (Sandbox Code Playgroud)

如果我设置它也适用于我 externals : ["sequelize"]