Ошибка задания Gulp - несовместимость Browserify / Babel? - PullRequest
0 голосов
/ 05 декабря 2018

Я унаследовал довольно необычный веб-сайт, который представляет собой гибрид C # и Node JS (с использованием TypeScript).В DevOps Azure настроена среда непрерывной интеграции для создания веб-сайта и его развертывания в тестовой среде.Мы не должны были строить сайт с марта, и теперь процесс сборки неожиданно прервался.Нам пришлось изменить ссылку на «gulp» в package.json с «github: gulpjs / gulp # 4.0» (которого больше нет) на «github: gulpjs / gulp # 71c094a51c7972d26f557899ddecab0210ef3776», но теперь на этапе процесса сборки этот шагвызывает gulp ("пакет node_modules \ gulp \ bin \ gulp.js") со следующей ошибкой (это из журнала сборки DevOps):

2018-12-04T22:38:48.9501268Z [22:38:48] TypeError in plugin "gulp-babel"
2018-12-04T22:38:48.9501465Z Message:
2018-12-04T22:38:48.9501806Z     Path must be a string. Received undefined

Если я запускаю "node node_modules \ gulp\ bin \ gulp.js package "локально, я получаю следующее:

[11:54:45] Error: TypeScript error: node_modules/@angular/router/src/router_module.d.ts(140,41): Error TS1110: Type expected.
    at formatError (C:\.....\node_modules\gulp\node_modules\gulp-cli\lib\versioned\^4.0.0\format-error.js:20:10)
    at Gulp.<anonymous> (C:\.....\node_modules\gulp\node_modules\gulp-cli\lib\versioned\^4.0.0\log\events.js:31:15)
    at emitOne (events.js:120:20)
    at Gulp.emit (events.js:210:7)
    at Object.error (C:\.....\node_modules\undertaker\lib\helpers\createExtensions.js:61:10)
    at handler (C:\.....\node_modules\now-and-later\lib\mapSeries.js:43:14)
    at f (C:\.....\node_modules\once\once.js:25:25)
    at f (C:\.....\node_modules\once\once.js:25:25)
    at tryCatch (C:\.....\node_modules\async-done\index.js:24:15)
    at done (C:\.....\node_modules\async-done\index.js:40:12)

Эта ссылка - https://github.com/babel/gulp-babel/issues/154 - кажется, предлагает проблему с browserify (или, по крайней мере, несовместимость между browserify и babel-core)?Единственное предложение - отказаться от использования browserify.Для меня загадка заключается в том, почему это работало ранее, но теперь терпит неудачу, когда все, что мы изменили, это ссылка на gulp.

Может ли кто-нибудь объяснить мне, что является причиной ошибки и как ее устранить?Любая помощь будет принята с благодарностью.

Задача gulp, которая вызывает ошибку, выглядит следующим образом:

gulp.task("bundle", function () {
        return browserify({
            basedir: '.',
            debug: true,
            entries: [config.appMain],
            cache: {},
            packageCache: {}
        })
        .plugin(tsify)
        .bundle()
        .pipe(source('app.bundle.js'))
        .pipe(buffer())
        .pipe(sourcemaps.init())
        .pipe(babel({ presets: ['env'] }))
        .pipe(uglify())
        .pipe(sourcemaps.write('./', { includeContent: false, sourceRoot: '../' }))
        .pipe(gulp.dest(config.jsDest));
});

config.appMain = "App / main.ts" config.jsDest = "./ wwwroot / js "

В верхней части gulpfile.js находятся соответствующие 'require':

var gulp = require('gulp');
var browserify = require("browserify");
var tsify = require("tsify");
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var sourcemaps = require('gulp-sourcemaps');
var babel = require('gulp-babel');
var uglify = require("gulp-uglify");
var config = require('./gulp.config')();

Версии package.json devDependencies:

"@types/core-js": "^0.9.34",
"@types/node": "^6.0.45",
"babel-preset-env": "^1.7.0",
"browserify": "^16.2.3",
"concurrently": "^3.4.0",
"del": "^2.2.2",
"gulp": "github:gulpjs/gulp#71c094a51c7972d26f557899ddecab0210ef3776",
"gulp-babel": "^6.1.2",
"gulp-clean": "^0.3.2",
"gulp-clean-css": "^3.0.4",
"gulp-concat": "^2.6.1",
"gulp-copy": ">=0.0.2",
"gulp-cssmin": "^0.2.0",
"gulp-htmlmin": "^3.0.0",
"gulp-load-plugins": "^1.3.0",
"gulp-rename": ">=1.2.2",
"gulp-rimraf": ">=0.2.0",
"gulp-sourcemaps": "^2.6.0",
"gulp-uglify": "^3.0.0",
"gulp-util": "^3.0.8",
"gulp-watch": ">=4.3.9",
"jasmine-core": "2.4.1",
"merge-stream": "^1.0.1",
"nodemon": "^1.11.0",
"tsify": "^3.0.1",
"tslint": "^3.15.1",
"typescript": "^2.0.0",
"typings": "^1.3.2",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^2.0.0"

Я пытался использовать babelify, поэтому задача gulp становится такой:

gulp.task("bundle", function () {
    return browserify({
            basedir: '.',
            debug: true,
            entries: [config.appMain],
            cache: {},
            packageCache: {}
        })
        .transform(babelify, { presets: ['env'] })
        .plugin(tsify)
        .bundle()
        .pipe(source('app.bundle.js'))
        .pipe(buffer())
        .pipe(sourcemaps.init())
        .pipe(uglify())
        .pipe(sourcemaps.write('./', { includeContent: false, sourceRoot: '../' }))
        .pipe(gulp.dest(config.jsDest));
});

, но я получаю точно такую ​​же ошибку, когда выполняю локальный "пакет node_modules \ gulp \ bin \ gulp.js".

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация или код.Спасибо за любую помощь, вы можете дать.

1 Ответ

0 голосов
/ 07 декабря 2018

Мой коллега решил это.Решение, конечно, использовать babelify.Однако, я неправильно понял реализацию.В задаче gulp, которая работает, используется:

gulp.task("bundle", function () {
    return browserify({
            transform: [["babelify", { "presets": ["@babel/preset-env"] }]],
            basedir: '.',
            debug: true,
            entries: [config.appMain],
            cache: {},
            packageCache: {}
        })
        .plugin(tsify)
        .bundle()
        .pipe(source('app.bundle.js'))
        .pipe(buffer())
        .pipe(sourcemaps.init())
        .pipe(babel({ presets: ["@babel/preset-env"] }))
        .pipe(uglify())
        .pipe(sourcemaps.write('./', { includeContent: false, sourceRoot: '../' }))
        .pipe(gulp.dest(config.jsDest));
});

Пакеты и версии, используемые в файле package.json devDependencies:

    "browserify": "^16.2.3",
    "@babel/core": "^7.2.0",
    "@babel/preset-env": "^7.2.0",
    "babelify": "^10.0.0",
    "gulp-babel": "8.0.0",
...