CouchDB 1.6.1 hereのドキュメントを見ると、JS require(path)関数を使うことができます。これどうやってやるの?ドキュメントには、path
は「設計ドキュメントルートから開始されたCommonJSモジュールパス」と記載されています。マップ関数内でどのようにrequire()を使用しますか?
マイデザインドキュメントが_design/data
と呼ばれています。私は/_design/data/test.js
でアクセスすることができtest.js
と呼ばれるこの設計ドキュメントに添付ファイルを、アップロード、および次のコードが含まれています:
exports.stuff = function() {
this.getMsg = (function() {
return 'hi';
})()
}
しかし、私のマップ機能で次のコード:
function(doc) {
try {
var x = require('test.js');
} catch (e) {
emit ('error', e)
}
}
結果でこのエラーは:内のオブジェクトとしてパスを探しているrequire
よう
["error", "invalid_require_path", "Object has no property \"test.js\". {\"views\":{\"lib\":null},\"_module_cache\":{}}"]
に見えますparam ...しかし、それがなぜなのか分からない。
のCouchDBの古いバージョンではこの機能を説明、thisリンクを見ると、それはあなたができると言う:
However, in the upcoming CouchDB 1.1.x views will be able to require modules provided they exist below the 'views' property (eg, 'views/lib/module')
そして、次のコード例を示します:
{
"_id": "_design/example",
"lib": {
// modules here would not be accessible from view functions
},
"views": {
"lib" {
// this module is accessible from view functions
"module": "exports.test = 'asdf';"
},
"commonjs": {
"map": function (doc) {
var val = require('views/lib/module').test;
emit(doc._id, val);
}
}
}
}
しかし、これは動作しませんでしたCouchDB 1.6.1に関する私のために。
https://wiki.apache.org/couchdb/CommonJS_Modulesは、私が働い例を得た:この例を使用
{message: "mod.current is null", fileName: "/usr/share/couchdb/server/main.js", lineNumber: 1137, stack: "([object Array],[object Object])@/usr/share/couchdb/server/main.js:1137\n([object Array],[object Object])@/usr/share/couchdb/server/main.js:1143\n([object Array],[object Object],[object Object])@/usr/share/couchdb/server/main.js:1143\n(\"views/lib/module\")@/usr/share/couchdb/server/main.js:1173\n([object Object])@undefined:3\n([object Object])@/usr/share/couchdb/server/main.js:1394\n()@/usr/share/couchdb/server/main.js:1562\[email protected]/usr/share/couchdb/server/main.js:1573\n"
ありがとうございました。あなたはtest.jsを意味しますか? –
いいえ、あなたの質問で。 '' commonjs '' {"map": "function(doc){var val = require( 'views/lib/module')。}これは、コメントの方が上手く書けるはずです。 ; emit(doc._id、val);} "}' –