Ich habe den folgenden Code, der beim Ausführen gegen Babel funktionierte. Jetzt, wo ich bin mit Harmonie bekomme ich folgende Fehlermeldung:ES6-Knoten async/erwarte unerwartete Kennung
let adResult = await ad.isUserValid(domainPath, password);
^^
SyntaxError: Unexpected identifier
Die folgende Klasse Funktion:
class ActiveDirectoryHelper {
constructor(options) {
this.config = options.config
this.ad = null;
}
connect() {
var config = {
url: this.config.url,
baseDN: this.config.baseDN,
attributes: this.config.attributes
};
if (this.config.account.user.length > 0) {
config.username = this.config.account.user;
config.password = this.config.account.password;
}
this.ad = new ActiveDirectory(config);
}
async isUserValid(user, password) {
return new Promise((resolve, reject) => {
this.ad.authenticate(user, password, (err, auth) => {
if (err) {
reject({
code: 500,
message: "Unknown authentication error",
entry: {}
});
}
if (auth) {
resolve({
code: 200,
message: "OK",
entry: {
user: user,
password: password
}
});
} else {
reject({
code: 400,
message: "Authentication failed",
entry: {}
});
}
});
});
}
...
exports.ActiveDirectoryHelper = ActiveDirectoryHelper;
ich die Klasse wie folgt verwenden:
const ad = new ActiveDirectoryHelper({
config: adConfig
});
ad.connect();
const domainPath = domain.length > 0 ? `${domain}\\${user}` : user;
const adResult = await ad.isUserValid(domainPath, password);
Ich betreibe den Code unter Verwendung der folgenden Parameter:
node --harmony --use_strict --harmony-async-await user.js <my parameters>
Wenn ich nehme die await beim Aufruf der Methode:
const adResult = ad.isUserValid(domainPath, password);
dann habe ich den Fehler nicht, aber es tut auch warten, bis das Verfahren abgeschlossen ist. Ich habe den Fehler gegoogelt und es scheint, als ob Sie nur in einer Funktion verwenden können, die Async in ist. Aber ohne außerhalb des Methodenaufrufs zu warten, wartet es nicht, bis es beendet ist. Irgendwelche Ideen?
, welche Version von 'node' verwenden Sie? – Sridhar
Es klingt, als ob Sie eine alte Version von Node verwenden. Jede Version von Node 4.3 sollte das Schlüsselwort let unterstützen. – Aron
Ihr habt recht Ich habe Computer gewechselt, von denen ich dachte, dass sie die neueste Version 7 hätten. Sobald ich sie aktualisiert habe, hat es funktioniert. Danke für den Tipp – adviner