2016-01-20 208 views
2

我嘗試使用sequelize和sqlite3與電子和我有問題時使用它與webpack。正確的sqlite3的負載和數據庫中寫入數據: 爲了測試我的描述中提供的項目做npm installWebpack sequelize,sqlite3錯誤無法找到模塊sqlite3

例1:我想兩個項目一個沒有的WebPack和它工作得很好。 https://www.dropbox.com/sh/yag6690rnc5l9y0/AAA0WeKvnHxhxY4qtxhHONWma?dl=0

npm start will launch node_modules/.bin/electron .  

它推出了使用的index.js文件中的index.html:

Project 1 Structure

例2:我使用的WebPack因爲我用ES6編譯項目語法(在提供的示例中,語法不是ES6,它只是重用與示例1中相同的文件)。 https://www.dropbox.com/sh/g38305knvrpdala/AAANbVBXlc-scBrzdCQTqqI7a?dl=0

npm start將編譯index.js進入點和輸出所使用的index.html的用於電子應用程式bundle.js文件。

Project 2 Structure

當我啓動第二個例子中,該加載bundle.js文件與的WebPack編譯中的index.html我具有低於錯誤:

Error

要查看ERRRRR issss,請參閱

不像在提供的鏈接提供的不是使用webpack的電子。鏈接是我的示例1項目,對於我來說,第一次嘗試就能完美地完成任務,而無需再做任何事情。但我嘗試了爲我的webpack示例2提供的每個解決方案,但沒有任何效果。

我不明白爲什麼,在基本示例中,直接在html中包含index.js文件時效果很好,但是當通過webpack處理幷包含在同一個html中時,它不起作用?我在這裏錯過了什麼嗎?

如果沒有使用webpack編譯,一切正常嗎? WebPack讓我編寫ES6並將所有東西分成一個包,但如果我手動重寫所有文件並只使用一個文件,它將起作用...所以從我的角度來看,這裏更多的是一個webpack行爲/配置問題。

回答

7

我終於找到了解決方案,問題是像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"]