javascript - Error de anotación con Babel y desestructuración.
angularjs babeljs (1)
Tengo un problema similar, simplemente cambié el orden de gulp pipe a: babel -> anotar. ng-annotate no admite nuevas versiones de JS: github.com/olov/ng-annotate/issues/237
Originalmente respondido por @illagrenan en la sección de comentarios de arriba
Error extraño al hacer la transcripción a ES6 con Babel, a ng-annotate
no le gusta la desestructuración. Copié mi fuente en el compilador de babel en línea y funciona bien. Comentando ng-annotate
en mi trago cadena de cadenas se deshace del error. Eliminar el /* @ngAnnotate */
comentario en el archivo e inyectarlo manualmente tampoco cambia nada.
Sección Gulp:
return gulp.src(config.scripts.app)
.pipe(changed(config.dist + ''/scripts''))
.pipe(plumber())
.pipe(annotate())
// Filter out and transpile only .es6.js files
.pipe(es6)
.pipe(babel({
presets: [''es2015''],
plugins: [''extensible-destructuring''],
comments: false
}))
.pipe(es6.restore)
.pipe(concat(''scripts.js''))
.pipe(gulp.dest(config.dist + ''/scripts''))
Fuente en cuestión:
var [min, max] = values.map(val => +val);
// let/var doesn''t make a difference.
ngModelCtrl.$modelValue = [min, max];
El error proviene de una dependencia en ng-annotate
:
Error: StringMap expected string key
at stringmap.set (/Users/macbookair/Places/app/places/frontend/node_modules/gulp-ng-annotate/node_modules/ng-annotate/node_modules/stringmap/stringmap.js:101:19)
at Scope.add (/Users/macbookair/Places/app/places/frontend/node_modules/gulp-ng-annotate/node_modules/ng-annotate/build/es5/scope.js:102:17)
at /Users/macbookair/Places/app/places/frontend/node_modules/gulp-ng-annotate/node_modules/ng-annotate/build/es5/scopetools.js:38:25
at Array.forEach (native)
.... more
stringmap.js
función stringmap.js
en cuestión:
stringmap.prototype.set = function(key, value) {
if (typeof key !== "string") {
throw new Error("StringMap expected string key");
}
if (key === "__proto__") {
this.hasProto = true;
this.proto = value;
} else {
this.obj[key] = value;
}
};
La key
y el value
cierre de sesión en la función anterior devuelve esto:
undefined {
kind: ''var'',
node: {
type: ''ArrayPattern'',
start: 1178,
end: 1188,
loc: { start: [Object], end: [Object] },
range: [ 1178, 1188 ],
elements: [ [Object], [Object] ]
},
from: 1215
}
Claramente, el argumento key
no está definido, pero ¿por qué le importa?