【问题标题】:Webpack sequelize, sqlite3 error cannot find module sqlite3Webpack sequelize,sqlite3 错误找不到模块 sqlite3
【发布时间】:2016-04-27 00:08:04
【问题描述】:

我尝试将 sequelize 和 sqlite3 与电子一起使用,但在将其与 webpack 一起使用时遇到问题。 为了测试在我的描述中提供的项目做npm install前 P>

示例 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 使用。

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

要查看ERRRRR issss, EM> 强>

与提供的链接不同,该链接不是关于将 webpack 与电子一起使用。该链接是我的示例 1 项目,对我来说,一切都在第一次尝试时完美运行,无需再做任何事情。但是我尝试了为我的 webpack 示例 2 提供的所有解决方案,但没有任何效果。

我不明白为什么,在基本示例中,直接将 index.js 文件直接包含在 html 中时它可以正常工作,但是当被 webpack 处理并包含在同一 html 中时,它就不起作用了?我在这里错过了什么吗?

一切正常,如果不与的WebPack编译? WebPack 让我编写 ES6 并将所有内容拆分为一个包,但如果我手动重写所有文件并仅使用一个文件,它将起作用......所以从我的角度来看,这更像是一个 webpack 行为/配置问题。

【问题讨论】:

    标签: javascript sqlite webpack electron


    【解决方案1】:

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

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

    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"],它也适用于我

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-25
      • 2016-07-10
      • 1970-01-01
      • 2016-07-23
      • 2015-06-12
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      相关资源
      最近更新 更多