NW.js - PouchDB - 无法通过节点 webkit 中的 require() 使用 PouchDB

NW.js - PouchDB - Unable to use PouchDB via require() in node webkit

我是 pouchdb 的新手,nw.js 可能这个问题有点太简单了,(抱歉我的无知)。

我正在尝试通过 require() 在 nw.js 项目中使用 pouchdb,但没有成功。

根据 pouchdb setup 的文档,在 Node.js 部分下,我完全按照它所说的进行编辑,但没有成功。

之后,我将 leveldown 组件安装到项目中,并在 https://github.com/nolanlawson/pouchdb-nw github 项目下按照以下说明进行操作。

因此,在这一点上,我已经完成了以下操作:

nw-gyp configure --target=0.12.3 / in the node_modules/leveldown directory

nw-gyp build

然后,根据 pouchdb.com/guides/databases.html 我有:

var PouchDB = require('pouchdb');
var db = new PouchDB('kittens');

但还是没有运气。此外,通过 运行 以下内容:

db.info().then(function (info) {console.log(info); });

没有回应。

注意:如果只包括这个<script src="../node_modules/pouchdb/dist/pouchdb.min.js"></script> 在 index.html 文件中,一切都很顺利。

nw.js版本:0.12.3/ pouchdb 版本:5.2.1

我错过了什么?

你试过演示了吗? https://github.com/nolanlawson/pouchdb-nw-hello-world NW.JS.

中正确安装 PouchDB 的步骤相当多

编辑:哦等等,是的,您已经看过演示了。也许问题是 LevelDOWN 与您的 NW 版本不兼容?在我的演示中,我使用的 NW 版本比你的要旧。

另一种选择是在 Node 中使用 websql 适配器,它应该可以为您提供与 LevelDB 相似的性能,同时可能比 LevelDOWN 更容易编译。如果一切都失败了,我建议在 LevelDOWN 回购上提交问题;他们有大量与在 Z 操作系统上的 Y 体系结构上构建 X 版本节点相关的问题,因此您的 XYZ 组合可能是独一无二的。

我终于找到了解决问题的有效方法。

解决方法如下:

1) 我将 pouchDB 更新到 5.3.0

npm update pouchdb --save

2) 然后导航至 node_modules/leveldown

cd node_modules/leveldown

3) 使用 nw.js 目标版本

配置 gyp

sudo nw-gyp configure --target=0.12.3

4) 再次建造 nw gyp

nw-gyp build

5) 然后在我的 javascript 模块文件中

 var PouchDB = require('pouchdb');
    var arincPouchDB = new PouchDB('./db/arincAirports'); // new pouch db for node without adapter // means you get leveldb adapter in this case.
    var jsonData = require("../datasrc/output/data.json");
    arincPouchDB.bulkDocs(jsonData);

    arincPouchDB.info().then(function (info) {
        console.log(info);
    });

6) 控制台显示...

Objectadapter: "leveldb" 
auto_compaction: false
backend_adapter:"LevelDOWN"
db_name: "./db/arincAirports"doc_count: 12
update_seq: 12
__proto__: Object...

注意: 如果您尝试从 html 文件中的脚本标签使用 pouchDB,同时您必须在 javascript 函数,将通过模块导出导出,例如

exports.pouchDBFunction = new pouchDBFunction();

并在另一个 javascript 文件中使用这个导出函数, 像这样

var json2PouchDB = require("./js/pouchDBFunction.js");
 json2PouchDB.pouchDBFunction;

将不起作用,您将收到错误 pouchdb 未定义。这就是为什么您需要通过 require() 函数拥有 pouchDB。

希望这个变通办法能帮助...