wake-up-neo.net

Gulpfile.js konnte nicht geladen werden

Der Visual Studio-Task-Runner kann die Gulp-Datei nicht laden. Ich benutze VS2017 v15.9.4, das Projekt wurde jedoch vor einigen Jahren entwickelt.

Failed to run "...\Gulpfile.js"...
cmd.exe /c gulp --tasks-simple
assert.js:350
    throw err;
    ^
AssertionError [ERR_ASSERTION]: Task function must be specified
    at Gulp.set [as _setTask] (...\node_modules\undertaker\lib\set-task.js:10:3)
    at Gulp.task (...\node_modules\undertaker\lib\task.js:13:8)
    at Object.<anonymous> (...\gulpfile.js:34:6)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)

Ich habe meine lokale Projektadresse durch "..." ersetzt.

npm -v --> 6.4.1

node -v --> 10.14.2

gulp -v --> CLI version 2.0.1
            Local version 4.0.0

Der Inhalt von package.json file:

{
  "version": "1.0.0",
  "name": "tratic",
  "private": true,
  "devDependencies": {
    "gulp": "github:gulpjs/gulp#4.0",
    "gulp-clean-css": "3.5.0",
    "gulp-concat": "2.6.1",
    "gulp-durandal": "1.1.7",
    "gulp-install": "^1.1.0",
    "gulp-uglify": "3.0.0",
    "gulp-util": "3.0.8",
    "rimraf": "2.6.1"
  },
  "dependencies": {
    "assert": "^1.4.1",
    "assert-js": "^0.20.0",
    "natives": "^1.1.5"
  },
  "scripts": {
    "gulp": "./node_modules/gulp/bin/gulp.js"
  }
}

Der Inhalt von gulpfile.js :

var gulp = require('gulp'),
    durandal = require('gulp-durandal'),
    rimraf = require('rimraf');

gulp.task('clean', function (cb) {
    rimraf('app/main-built.js', cb);
});

gulp.task('durandal', ['clean'], function () {
    durandal({
        baseDir: 'app',
        main: 'main.js',
        output: 'main-built.js',
        almond: true,
        minify: true
    })
    .pipe(gulp.dest('app'));
});

gulp.task('default', ['durandal']);

Ich google es und die bestehenden Lösungen können das Problem nicht lösen. Es gibt einige verwandte Probleme, die für mich nicht funktionieren.

Wie kann ich das Problem lösen?

5

Ich habe Ihr Setup ausprobiert, es hat in der Tat einen Fehler wie den Ihren ausgelöst. Ich ging zu den gulp docs und probierte ihre Version einer gulpfile aus, und es funktionierte ohne Probleme. Also habe ich Ihre Gulpfile so umgeschrieben, dass sie mit ihrem Beispiel übereinstimmen, und es hat gut funktioniert.


    var gulp = require('gulp'),
        durandal = require('gulp-durandal'),
        rimraf = require('rimraf');

    var paths = {
        app: "./App/**/*.js",
        js: "./Scripts/**/*.js",
        css: "./Content/**/*.css",
        concatJsDest: "./Scripts/vendor-scripts.min.js",
        concatCssDest: "./Content/vendor-css.min.css"
    };

    function clean (cb) {
      rimraf('app/main-built.js', cb);
    }

    gulp.task('clean', clean);

    function runDurandal () {
      return durandal({
          baseDir: 'app',
          main: 'main.js',
          output: 'main-built.js',
          almond: true,
          minify: true,
          rjsConfigAdapter: function (rjsConfig) {
              rjsConfig.deps = ['text'];
              return rjsConfig;
          }
      })
      .pipe(gulp.dest('app'));
    }

    var build = gulp.series(clean, runDurandal);

    gulp.task('default', build);

Grundsätzlich habe ich Funktionen, die Sie als Aufgaben verwenden, in Variablen verschoben und Serien verwendet, um Durandal auszuführen.

dann habe ich npx gulp --tasks-simple ausprobiert und eine korrekte ausgabe erhalten

clean
default

Übrigens, schau nach npx , damit du gulp nicht global installieren musst.

Hoffentlich hilft das!

4
Ivan Satsiuk

Diese Syntax ist in gulp4 nicht mehr erlaubt:

gulp.task('default', ['durandal']);

Benutzen :

gulp.task('default', gulp.series('durandal'));

Ebenso ändern zu:

gulp.task('durandal', gulp.series('clean', function (done) {
    durandal({
        baseDir: 'app',
        main: 'main.js',
        output: 'main-built.js',
        almond: true,
        minify: true
    })
    .pipe(gulp.dest('app'));
    done();
});

Die Verwendung von pump würde wahrscheinlich zu einer besseren Fehlerberichterstattung führen, als wenn Sie sie nicht erhalten würden.

3
Mark

Versuchen Sie, diese Problemumgehung zu verwenden: https://github.com/ampproject/docs/issues/793 Downgrade gulp auf diese Version 3.9.1.

0
koλzar