PouchDB 和电子(windows 环境)
PouchDB and electron (windows env)
在玩 Electron 时(在 Windows 下)我尝试使用 PouchDB。不幸的是,它似乎对我不起作用。
在我的例子中 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 { __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 {
> 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.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.LevelDownPouch (c:\learning\electron\node_modules\po uchdb\lib\index.js:5373:17)
> at new PouchDB (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 (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 下使用和不使用适配器尝试了相同的代码,但都失败了。我认为它不依赖于 os
好的,我找到问题了。问题是 OS 相关的,这一切都与重新编译 sqlite3 有关。实际上我需要添加 windows 工具包并稍后将路径设置为 python(我从错误中读取)。在检查 linux 下一切顺利后,我想通了。
也许将我的 OS 更改为 linux 会更安全,但实际上我需要为 windows 开发。我需要找到平衡的方式 ;)
在玩 Electron 时(在 Windows 下)我尝试使用 PouchDB。不幸的是,它似乎对我不起作用。
在我的例子中 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 { __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 {
> 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.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.LevelDownPouch (c:\learning\electron\node_modules\po uchdb\lib\index.js:5373:17)
> at new PouchDB (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 (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 下使用和不使用适配器尝试了相同的代码,但都失败了。我认为它不依赖于 os
好的,我找到问题了。问题是 OS 相关的,这一切都与重新编译 sqlite3 有关。实际上我需要添加 windows 工具包并稍后将路径设置为 python(我从错误中读取)。在检查 linux 下一切顺利后,我想通了。
也许将我的 OS 更改为 linux 会更安全,但实际上我需要为 windows 开发。我需要找到平衡的方式 ;)