Mongo用に新しいES6ベースのnode.js ODMを使用しようとしています(Robe http://hiddentao.github.io/robe/ )
「予期しない厳格モード予約語」エラーを取得します。私はここで何か間違っているドンですか?
test0.js
"use strict";
// Random ES6 (works)
{ let a = 'I am declared inside an anonymous block'; }
var Robe = require('robe');
// :(
var db1 = yield Robe.connect('127.0.0.1');
それを実行します:
C:\TestWS>node --version
v0.11.10
C:\TestWS>node --harmony test0.js
C:\TestWS\test0.js:12
var db1 = yield Robe.connect('127.0.0.1');
^^^^^
SyntaxError: Unexpected strict mode reserved Word
at exports.runInThisContext (vm.js:69:16)
at Module._compile (module.js:432:25)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:349:32)
at Function.Module._load (module.js:305:12)
at Function.Module.runMain (module.js:490:10)
at startup (node.js:123:16)
at node.js:1031:3
generators を使用して同期操作で非同期操作を行う場合は、次のようにする必要があります。
co(function*() {
"use strict";
{ let a = 'I am declared inside an anonymous block'; }
var Robe = require('robe');
var db1 = yield Robe.connect('127.0.0.1');
})();
ここで、co
実現は次の場所にあります。
等々。
strict mode
ジェネレーターの外部でyield
を使用することはできません。 non-strict mode
ジェネレーターの外部yield
は変数識別子と見なされます-したがって、いずれにしてもエラーがスローされます。
また注目に値する... coの新しいバージョンは、サンクではなくpromiseを返します。したがって、これはcoの新しいバージョンで機能したものです。
var co = require('co');
co(function*() {
"use strict";
{ let a = 'I am declared inside an anonymous block'; }
var Robe = require('robe');
var db1 = yield Robe.connect('127.0.0.1/swot');
console.log(db1)
return db1;
}).then(function (value) {
console.log(value);
}, function (err) {
console.error(err.stack);
});