2017-02-04 79 views
0

當玩Electron(在Windows下)時,我嘗試使用PouchDB。不幸的是,它似乎不適合我。PouchDB和電子(Windows環境)

在我的情況的package.json看起來是這樣的:

"devDependencies": { 
    "electron": "^1.4.12", 
    "electron-rebuild": "^1.4.0" 
    }, 
    "dependencies": { 
... 
    "electron-reload": "^0.2.0", 
    "pouchdb": "*", 
    "pouchdb-adapter-node-websql": "*", 
    "pouchdb-find": "*", 
... 
} 

和JS代碼本身:

var pouch = require('pouchdb'); 
var db = new pouch('mydb-websql'); 
console.log(db) 

的結果是類似以下內容:

> PouchDB$5 { __opts: { name: 'mydb-websql', adapter: 'leveldb' }, 
> auto_compaction: undefined, prefix: '_pouch_', name: 
> 'mydb-websql', _adapter: 'leveldb', domain: null, _events: {}, 
> _eventsCount: 0, _maxListeners: undefined, taskqueue: TaskQueue$1 { 
>  isReady: false, 
>  failed: 
>  Error: Error: Could not locate the bindings file. Tried: 
>  Ôćĺ c:\learning\electron\node_modules\pouchdb\node_modules\leveldown 
> \build\leveldown.node 
>  Ôćĺ c:\learning\electron\node_modules\pouchdb\node_modules\leveldown 
> \build\Debug\leveldown.node 
>  Ôćĺ c:\learning\electron\node_modules\pouchdb\node_modules\leveldown 
> \build\Release\leveldown.node 
>  Ôćĺ c:\learning\electron\node_modules\pouchdb\node_modules\leveldown 
> \out\Debug\leveldown.node 
>  Ôćĺ c:\learning\electron\node_modules\pouchdb\node_modules\leveldown 
> \Debug\leveldown.node 
>  Ôćĺ c:\learning\electron\node_modules\pouchdb\node_modules\leveldown 
> \out\Release\leveldown.node 
>  Ôćĺ c:\learning\electron\node_modules\pouchdb\node_modules\leveldown 
> \Release\leveldown.node 
>  Ôćĺ c:\learning\electron\node_modules\pouchdb\node_modules\leveldown 
> \build\default\leveldown.node 
>  Ôćĺ c:\learning\electron\node_modules\pouchdb\node_modules\leveldown 
> \compiled\6.5.0\win32\x64\leveldown.node: unable to import leveldown 
>   at requireLeveldown (c:\learning\electron\node_modules\pouchdb\li b\index.js:5173:12) 
>   at PouchDB$5.LevelDownPouch (c:\learning\electron\node_modules\po uchdb\lib\index.js:5373:17) 
>   at new PouchDB$5 (c:\learning\electron\node_modules\pouchdb\lib\i ndex.js:2753:36) 
>   at Object.<anonymous> (c:\learning\electron\main.js:6:10) 
>   at Module._compile (module.js:556:32) 
>   at Object.Module._extensions..js (module.js:565:10) 
>   at Module.load (module.js:473:32) 
>   at tryModuleLoad (module.js:432:12) 
>   at Function.Module._load (module.js:424:3) 
>   at loadApplicationPackage (C:\Users\adam\AppData\Roaming\npm\node_modu 
> les\electron\dist\resources\default_app.asar\main.js:280:12), 
>  queue: [] }, adapter: 'leveldb' } 

當我使用的WebSQL適配器的結果是甚至我會說更糟糕的:

App threw an error during load 
Error: Invalid Adapter: websql 
    at new PouchDB$5 (c:\learning\electron\node_modules\pouchdb\lib\index.j 
s:2745:11) 
    at Object.<anonymous> (c:\learning\electron\main.js:6:10) 
    at Module._compile (module.js:556:32) 
    at Object.Module._extensions..js (module.js:565:10) 
    at Module.load (module.js:473:32) 
    at tryModuleLoad (module.js:432:12) 
    at Function.Module._load (module.js:424:3) 
    at loadApplicationPackage (C:\Users\adam\AppData\Roaming\npm\node_modules\el 
ectron\dist\resources\default_app.asar\main.js:280:12) 
    at Object.<anonymous> (C:\Users\adam\AppData\Roaming\npm\node_modules\electr 
on\dist\resources\default_app.asar\main.js:322:5) 
    at Module._compile (module.js:556:32) 

我必須承認,我試圖重建一切,我嘗試了所有適配器,沒有好的結果。我試圖另外安裝sqlite3並再次失敗。

您是否有任何其他想法,可能會出現什麼問題或者我可能會指望我的錯誤?


我在linux下嘗試了相同的代碼,但沒有發生適配器故障。我認爲它不取決於操作系統

回答

0

好吧,我發現了這個問題。問題是操作系統相關的,它都是在重新編譯sqlite3。實際上,我需要添加Windows工具包,並在稍後設置python路徑(我從錯誤中讀取它)。在檢查完linux下的一切都很順利之後,我想通了一遍。

也許將操作系統更改爲linux會更安全,但實際上我需要爲Windows開發。我需要找到平衡的方式;)