gulp-babel получить синтаксическую ошибку после удаления node_modules и снова запустить npm install
У меня есть задача gulp-babel в моем скрипте сборки gulp, и она работала хорошо, пока я не удалил каталог node_modules и не запустил npm install снова. Вернулся
SyntaxError: j.js: Unexpected token (790:10)
и журнал ошибок указал токен ошибки следующим образом:
789 | data,
> 790 | async = true,
| ^
791 | cache = 'no-cache',
792 | method = 'GET',
793 | headers = {},
Если я скомпилирую j.js
с кли babel j.js
напрямую, не получит сообщение об ошибке и вернет скомпилированный код, как ожидалось.
Мой код задачи глотка:
const gulp = require( 'gulp' );
const { babel } = require( 'gulp-load-plugins' )();
gulp.task( 'babel', () => {
return gulp.src( [
'.tmp/j.js'
] ).pipe( babel() ).pipe( gulp.dest( '.tmp' ) );
} );
Мой.babelrc:
{
"presets" : [ "es2016" ],
"plugins" : [
"transform-es2015-arrow-functions",
"transform-es2015-object-super",
"transform-es2015-parameters",
"transform-object-assign",
"transform-es2015-block-scoping",
"transform-es2015-shorthand-properties",
"transform-es2015-block-scoped-functions",
"transform-es2015-for-of",
"transform-es2015-destructuring",
[ "transform-es2015-classes", { "loose" : true } ],
[ "transform-es2015-spread", { "loose" : true } ],
[ "transform-es2015-template-literals", { "loose" : true } ]
]
}
Мои npm-зависимости:
"devDependencies": {
"babel-cli": "^6.14.0",
"gulp-babel": "^6.1.2",
"babel-plugin-transform-es2015-arrow-functions": "^6.8.0",
"babel-plugin-transform-es2015-block-scoped-functions": "^6.8.0",
"babel-plugin-transform-es2015-block-scoping": "^6.10.1",
"babel-plugin-transform-es2015-classes": "^6.9.0",
"babel-plugin-transform-es2015-destructuring": "^6.9.0",
"babel-plugin-transform-es2015-for-of": "^6.8.0",
"babel-plugin-transform-es2015-object-super": "^6.8.0",
"babel-plugin-transform-es2015-parameters": "^6.11.4",
"babel-plugin-transform-es2015-shorthand-properties": "^6.8.0",
"babel-plugin-transform-es2015-spread": "^6.8.0",
"babel-plugin-transform-es2015-template-literals": "^6.8.0",
"babel-plugin-transform-object-assign": "^6.8.0",
"babel-preset-es2016": "^6.11.3",
"colors": "^1.1.2",
"del": "^2.2.2",
"gulp": "^3.9.1",
"gulp-concat": "^2.6.0",
"gulp-file-include": "^0.14.0",
"gulp-load-plugins": "^1.2.4",
"gulp-uglify": "^2.0.0",
"gulp-watch": "^4.3.9",
"require-dir": "^0.3.0",
"run-sequence": "^1.2.2",
"uglify-js": "github:mishoo/UglifyJS2#harmony"
},
1 ответ
Я иду, чтобы ответить на мой вопрос снова.
Babeljs 6.14.0 начинает поддерживать "асинхронную функцию", которая была объявлена в ES7. Слово "async" стало ключевым словом для компилятора, поэтому я не могу использовать "async" в качестве имени переменной.
Затем я изменяю "async = true" на "sync = false", чтобы решить эту проблему.
Я сообщил о проблеме в Babeljs на GitHub. Я думаю, что эта проблема уже была исправлена.