web-dev-qa-db-fra.com

mode strict inattendu réservé Word - rendement? Nœud v0.11, harmonie, es6

Essayer d'utiliser un nouvel ODM node.js basé sur ES6 pour Mongo (Robe http://hiddentao.github.io/robe/ )

Obtenir l'erreur "Word inattendu réservé en mode strict". Est-ce que je me trompe quelque chose ici? 

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');

Exécuter:

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
23
Robert Taylor

Si vous voulez utiliser generators pour effectuer un fonctionnement asynchrone de manière synchrone, vous devez le faire comme suit:

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 réalisation vous pouvez trouver dans:

etc.

Dans strict mode, vous ne pouvez pas utiliser yield en dehors des générateurs. Dans non-strict mode, en dehors des générateurs, yield sera considéré comme un identificateur de variable - donc dans votre cas, une erreur sera quand même générée.

22
alexpods

Il convient également de noter que de nouvelles versions de promesses d'utilisation/retour sont utilisées plutôt que des slips. C’est donc ce qui a fonctionné avec les nouvelles versions de 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);
});
1
Robert Taylor