हर बार जब भी मैं कुछ भी चलाता हूं, मुझे जोरदार त्रुटि मिलती है। - कार्य फ़ंक्शन निर्दिष्ट होना चाहिए


108

मैं नीचे कमांड चलाने की कोशिश कर रहा हूं, लेकिन दुर्भाग्य से मैं त्रुटियों में भाग रहा हूं।

$ gulp build

मेरे टर्मिनल में और मुझे यह दावा त्रुटि मिलती है। मैंने नोड और एनपीएम की स्थापना रद्द की है और फिर से काढ़ा का उपयोग करके पुनः इंस्टॉल किया है - मैं पूरी तरह से Node.js की स्थापना कैसे रद्द करूं, और इन चरणों के साथ शुरुआत (मैक ओएस एक्स) से पुनः स्थापित करूं । मेरा नोड संस्करण v10.5.0 है और npm संस्करण है 6.1.0

मेरा सिस्टम मैकओएस हाई सिएरा है 10.13.2

assert.js:269
    throw err;
    ^

AssertionError [ERR_ASSERTION]: Task function must be specified
    at Gulp.set [as _setTask] (bulkit/startup-kit/node_modules/undertaker/lib/set-task.js:10:3)
    at Gulp.task (startup-kit/node_modules/undertaker/lib/task.js:13:8)
    at Object.<anonymous> 
    at Module._compile (internal/modules/cjs/loader.js:702:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
    at Module.load (internal/modules/cjs/loader.js:612:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
    at Function.Module._load (internal/modules/cjs/loader.js:543:3)
    at Module.require (internal/modules/cjs/loader.js:650:17)
    at require (internal/modules/cjs/helpers.js:20:18)

package.json

{
    "name": "bulkit-startup",
    "version": "0.0.1",
    "description": "Bulkit Startup Kit",
    "main": "Gruntfile.js",
    "devDependencies": {
        "autoprefixer": "^6.3.6",
        "browser-sync": "^2.24.5",
        "gulp": "^4.0.0",
        "gulp-clean": "^0.3.2",
        "gulp-concat": "^2.6.0",
        "gulp-postcss": "^6.1.0",
        "gulp-sass": "^2.2.0",
        "gulp-sourcemaps": "^1.6.0",
        "jquery": "^3.3.1",
        "mq4-hover-shim": "^0.3.0",
        "panini": "^1.3.0",
        "rimraf": "^2.5.2"
    },
    "engines": {
        "node": ">=0.10.1"
    },
    "scripts": {
        "start": "gulp",
        "build": "gulp build"
    },
    "repository": {
        "type": "git",
        "url": "https://github.com/cssninjaStudio/bulkit.git"
    },
    "bugs": {
        "url": "https://github.com/cssninjaStudio/bulkit/issues",
        "email": "support@cssninja.io"
    },
    "author": "Css Ninja <hello@cssninja.io> (https://cssninja.io/themes/bulkit)",
    "license": "Commercial",
    "private": true,
    "dependencies": {
        "bulma": "^0.7.0",
        "del": "^3.0.0",
        "jquery-waypoints": "^2.0.5",
        "jquery.counterup": "^2.1.0",
        "scrollreveal": "^3.4.0",
        "slick-carousel": "^1.8.1",
        "wallop": "^2.4.1"
    }
}

gulpfile.js

var gulp = require('gulp');
var clean = require('gulp-clean');
var sass = require('gulp-sass');
var sourcemaps = require('gulp-sourcemaps');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer');
var mq4HoverShim = require('mq4-hover-shim');
var rimraf = require('rimraf').sync;
var browser = require('browser-sync');
var panini = require('panini');
var concat = require('gulp-concat');
var port = process.env.SERVER_PORT || 8080;
var nodepath =  'node_modules/';
var assetspath =  'assets/';

// Starts a BrowerSync instance
gulp.task('server', ['build'], function(){
    browser.init({server: './_site', port: port});
});

// Watch files for changes
gulp.task('watch', function() {
    gulp.watch('scss/**/*', ['compile-scss', browser.reload]);
    gulp.watch('sass/**/*', ['compile-sass', browser.reload]);
    gulp.watch('js/**/*', ['copy-js', browser.reload]);
    gulp.watch('images/**/*', ['copy-images', browser.reload]);
    gulp.watch('html/pages/**/*', ['compile-html']);
    gulp.watch(['html/{layouts,includes,helpers,data}/**/*'], ['compile-html:reset','compile-html']);
    gulp.watch(['./src/{layouts,partials,helpers,data}/**/*'], [panini.refresh]);
});

// Erases the dist folder
gulp.task('reset', function() {
    rimraf('bulma/*');
    rimraf('scss/*');
    rimraf('assets/css/*');
    rimraf('assets/fonts/*');
    rimraf('images/*');
});

// Erases the dist folder
gulp.task('clean', function() {
    rimraf('_site');
});

// Copy Bulma filed into Bulma development folder
gulp.task('setupBulma', function() {
    //Get Bulma from node modules
    gulp.src([nodepath + 'bulma/*.sass']).pipe(gulp.dest('bulma/'));
    gulp.src([nodepath + 'bulma/**/*.sass']).pipe(gulp.dest('bulma/'));
});

// Copy static assets
gulp.task('copy', function() {
    //Copy other external font and data assets
    gulp.src(['assets/fonts/**/*']).pipe(gulp.dest('_site/assets/fonts/'));
    gulp.src([nodepath + 'slick-carousel/slick/fonts/**/*']).pipe(gulp.dest('_site/assets/css/fonts/'));
    gulp.src([nodepath + 'slick-carousel/slick/ajax-loader.gif']).pipe(gulp.dest('_site/assets/css/'));
});

//Theme Sass variables
var sassOptions = {
    errLogToConsole: true,
    outputStyle: 'compressed',
    includePaths: [nodepath + 'bulma/sass']
};

//Theme Scss variables
var scssOptions = {
    errLogToConsole: true,
    outputStyle: 'compressed',
    includePaths: ['./scss/partials']
};

// Compile Bulma Sass
gulp.task('compile-sass', function () {
    var processors = [
        mq4HoverShim.postprocessorFor({ hoverSelectorPrefix: '.is-true-hover ' }),
        autoprefixer({
            browsers: [
                "Chrome >= 45",
                "Firefox ESR",
                "Edge >= 12",
                "Explorer >= 10",
                "iOS >= 9",
                "Safari >= 9",
                "Android >= 4.4",
                "Opera >= 30"
            ]
        })//,
        //cssnano(),
    ];
    //Watch me get Sassy
    return gulp.src('./bulma/bulma.sass')
        .pipe(sourcemaps.init())
        .pipe(sass(sassOptions).on('error', sass.logError))
        .pipe(postcss(processors))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('./_site/assets/css/'));
});

// Compile Theme Scss
gulp.task('compile-scss', function () {
    var processors = [
        mq4HoverShim.postprocessorFor({ hoverSelectorPrefix: '.is-true-hover ' }),
        autoprefixer({
            browsers: [
                "Chrome >= 45",
                "Firefox ESR",
                "Edge >= 12",
                "Explorer >= 10",
                "iOS >= 9",
                "Safari >= 9",
                "Android >= 4.4",
                "Opera >= 30"
            ]
        })//,
        //cssnano(),
    ];
    //Watch me get Sassy
    return gulp.src('./scss/core.scss')
        .pipe(sourcemaps.init())
        .pipe(sass(sassOptions).on('error', sass.logError))
        .pipe(postcss(processors))
        .pipe(sourcemaps.write())
        .pipe(gulp.dest('./_site/assets/css/'));
});

// Compile Html
gulp.task('compile-html', function() {
    gulp.src('html/pages/**/*.html')
        .pipe(panini({
        root: 'html/pages/',
        layouts: 'html/layouts/',
        partials: 'html/includes/',
        helpers: 'html/helpers/',
        data: 'html/data/'
    }))
        .pipe(gulp.dest('_site'))
        .on('finish', browser.reload);
});

gulp.task('compile-html:reset', function(done) {
    panini.refresh();
    done();
});

// Compile css from node modules
gulp.task('compile-css', function() {
    return gulp.src([ 
        nodepath + 'slick-carousel/slick/slick.css',
        nodepath + 'slick-carousel/slick/slick-theme.css',
        nodepath + 'wallop/css/wallop.css',
        //Additional static css assets
        assetspath + 'css/icons.min.css',
    ])
        .pipe(concat('app.css'))
        .pipe(gulp.dest('./_site/assets/css/'));
});

// Compile js from node modules
gulp.task('compile-js', function() {
    return gulp.src([ 
        nodepath + 'jquery/dist/jquery.min.js', 
        nodepath + 'slick-carousel/slick/slick.min.js', 
        nodepath + 'scrollreveal/dist/scrollreveal.min.js',
        nodepath + 'waypoints/lib/jquery.waypoints.min.js',
        nodepath + 'waypoints/lib/shortcuts/sticky.min.js',
        nodepath + 'jquery.counterup/jquery.counterup.min.js',
        nodepath + 'wallop/js/Wallop.min.js',
        //Additional static js assets
        assetspath + 'js/ggpopover/ggpopover.min.js',
        assetspath + 'js/ggpopover/ggtooltip.js',
        assetspath + 'js/embed/embed.js',
        assetspath + 'js/gmap/gmap.min.js',
    ])
        .pipe(concat('app.js'))
        .pipe(gulp.dest('./_site/assets/js/'));
});

//Copy Theme js to production site
gulp.task('copy-js', function() {
    gulp.src('js/**/*.js')
        .pipe(gulp.dest('./_site/assets/js/'));
});

//Copy images to production site
gulp.task('copy-images', function() {
    gulp.src('images/**/*')
        .pipe(gulp.dest('./_site/assets/images/'));
});

gulp.task('init', ['setupBulma']);
gulp.task('build', ['clean','copy', 'compile-js', 'compile-css', 'copy-js', 'compile-sass', 'compile-scss', 'compile-html', 'copy-images']);
gulp.task('default', ['server', 'watch']);

जवाबों:


176

यदि कार्य को निष्पादित करने के लिए किसी अन्य कार्य पर निर्भर करता है, तो गुल 4.0 ने कार्यों को परिभाषित किया जाना चाहिए। सूची पैरामीटर को हटा दिया गया है।

आपके gulpfile.js से एक उदाहरण होगा:

// Starts a BrowerSync instance
gulp.task('server', ['build'], function(){
  browser.init({server: './_site', port: port});
});

सूची पैरामीटर के बजाय उन्होंने पेश किया है gulp.series()और gulp.parallel()

इस कार्य को कुछ इस तरह बदला जाना चाहिए:

// Starts a BrowerSync instance
gulp.task('server', gulp.series('build', function(){
  browser.init({server: './_site', port: port});
}));

मैं इसमें एक्सपर्ट नहीं हूं। आप श्रृंखला में चल रहे कार्यों के लिए gulp प्रलेखन या Jyy Thompkins और स्टीफन बॉमगार्टनर द्वारा निम्नलिखित उत्कृष्ट ब्लॉग पोस्टों में एक और अधिक मजबूत उदाहरण देख सकते हैं

https://codeburst.io/switching-to-gulp-4-0-271ae63530c0

https://fettblog.eu/gulp-4-parallel-and-series/


3
इससे मेरी त्रुटि बदल जाती Task must be specifiedहै Task never defined
2540625

@ 2540625 मुझे उम्मीद है कि आपको यह अंत में मिला होगा, लेकिन मुझे तब तक यही समस्या थी जब तक कि मैं श्रृंखला () / समानांतर () कॉल के साथ gulp.task की परिभाषा को स्थानांतरित नहीं करता था, जहां नीचे दिए गए कार्यों को परिभाषित किया गया था। ऐसा लगता है कि परिभाषित करने से पहले किसी फ़ंक्शन का उपयोग करने की कोशिश करने की क्लासिक जावास्क्रिप्ट त्रुटि।
जॉन

57

Gulpfile.js की अपनी अंतिम पंक्ति को बदलने का प्रयास करें

gulp.task('default', ['server', 'watch']);

साथ में

gulp.task('default', gulp.series('server', 'watch'));

1
लघु और उपयोगी :)
एहसान

21

पैकेज में अपने gulp संस्करण को कम करें। फाइल को 3.9.1-

"gulp": "^3.9.1",

6
यदि आप नोड v10 पर हैं तो ऐसा न करें।
bbsimonbb

1
@bbsimonbb आप उस पर विस्तृत कर सकते हैं, कृपया?
हेनरी

2
@ हेनरी वर्जन 4 बदल गया कि कार्यों को कैसे चलाया जाता है, इसलिए काम करने के लिए उसके वर्तमान कोड के लिए उसे gulp 3.9.1 चलाने की आवश्यकता है। लेकिन बेहतर उत्तर यह है कि अपने कोड को अपडेट करने के लिए gulp के साथ संगत 4+
user441058

14

आपको अपने gulp को gulp 4 से डाउनग्रेड करने की आवश्यकता नहीं है । कई कार्यों को संयोजित करने के लिए gulp.series () का उपयोग करें। पहली बार में विश्व स्तर पर गुलाल स्थापित करें

npm install --global gulp-cli

और फिर स्थानीय स्तर पर अपनी वर्किंग डायरेक्टरी के साथ इंस्टॉल करें

npm install --save-dev gulp

विवरण देखें

उदाहरण:

package.json

{
  "name": "gulp-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "browser-sync": "^2.26.3",
    "gulp": "^4.0.0",
    "gulp-sass": "^4.0.2"
  },
  "dependencies": {
    "bootstrap": "^4.3.1",
    "jquery": "^3.3.1",
    "popper.js": "^1.14.7"
  }
}

gulpfile.js

var gulp = require("gulp");
var sass = require('gulp-sass');
var browserSync = require('browser-sync').create();

// Specific Task
function js() {
    return gulp
    .src(['node_modules/bootstrap/dist/js/bootstrap.min.js', 'node_modules/jquery/dist/jquery.min.js', 'node_modules/popper.js/dist/umd/popper.min.js'])
    .pipe(gulp.dest('src/js'))
    .pipe(browserSync.stream());
}
gulp.task(js);

// Specific Task
function gulpSass() {
    return gulp
    .src(['src/scss/*.scss'])
    .pipe(sass())
    .pipe(gulp.dest('src/css'))
    .pipe(browserSync.stream());
}
gulp.task(gulpSass);

// Run multiple tasks
gulp.task('start', gulp.series(js, gulpSass));

gulp startकई कार्यों को चलाने के लिए और विशेष कार्य के लिए चलाएं gulp jsया चलाएं gulp gulpSass


1
यह काफी करीब था। सिंटैक्स सही पाने और निर्यात जोड़ने के लिए गुलप वेबसाइट की जाँच करनी थी।
ल्यूक पुप्लेट

11

https://fettblog.eu/gulp-4-parallel-and-series/

क्योंकि gulp.task(name, deps, func)द्वारा प्रतिस्थापित किया गया था gulp.task(name, gulp.{series|parallel}(deps, func))

आप नवीनतम संस्करण का उपयोग कर रहे हैं लेकिन पुराने कोड । कोड या डाउनग्रेड को संशोधित करें।


6

मुझे एक ही त्रुटि मिलती है जब गुलप का उपयोग किया जाता है। समाधान स्थानीय संस्करण और CLI संस्करण दोनों के लिए, गुलाप संस्करण 3.9.1 पर स्विच करना है।

sudo npm install -g gulp@3.9.1

प्रोजेक्ट के फ़ोल्डर में चलाएँ

npm install gulp@3.9.1

3

त्रुटियों को ठीक करने के लिए gulp & npm संस्करणों को बदलते रहना अच्छा नहीं है। मुझे अपनी वर्किंग मशीन को पुनः स्थापित करने के बाद पिछले दिनों कई अपवाद मिल रहे थे। और उन को फिर से स्थापित करने और ठीक करने के लिए मिनटों का समय बर्बाद किया।

इसलिए, मैंने सभी नवीनतम संस्करणों में अपग्रेड करने का निर्णय लिया:

npm -v : v12.13.0 
node -v : 6.13.0
gulp -v : CLI version: 2.2.0 Local version: 4.0.2

यह त्रुटि इस वजह से हो रही है कि यह कैसे आप में gulpfile कोडित है लेकिन संस्करण बेमेल नहीं है। तो, यहाँ आपको गुलपाइल में 2 चीज़ों को बदलना है, जिसे Gulp संस्करण 4 के साथ संरेखित करना है। Gulp 4 ने संस्करण 3 की तुलना में कार्य को आरंभ करने के तरीके को बदल दिया है।

  1. संस्करण 4 में, आपको कार्य को एक फ़ंक्शन के रूप में परिभाषित करना होगा, इसे स्ट्रिंग नाम से एक gulp कार्य के रूप में कॉल करना होगा। V3 में:

gulp.task ('सेवा', ['sass'], फ़ंक्शन () {..});

लेकिन V4 में ऐसा होना चाहिए:

function serve() {
...
}
gulp.task('serve', gulp.series(sass));
  1. जैसा कि @Aththur ने उल्लेख किया है, आपको कार्य फ़ंक्शन के लिए तर्कों को पारित करने के तरीके को बदलने की आवश्यकता है। यह V3 में इस तरह था:

gulp.task ('सेवा', ['sass'], फ़ंक्शन () {...});

लेकिन V4 में, यह होना चाहिए:

gulp.task('serve', gulp.series(sass));

1

समस्या यह है कि आप gulp 4 का उपयोग कर रहे हैं और gulfile.js में सिंटैक्स gulp 3 का है। इसलिए या तो अपने gulp को 3.xx में डाउनग्रेड करें या gulp 4 सिंटैक्स का उपयोग करें।

सिंटेक्स गुल 3:

gulp.task('default', ['sass'], function() {....} );

सिंटेक्स गुलप 4:

gulp.task('default', gulp.series(sass), function() {....} );

आप gulp और gulp कार्यों के बारे में और अधिक पढ़ सकते हैं: https://medium.com/@sudoanushil/how-to-write-gulp-tasks-ce1b1b7a7e81


-4

कदम:

  1. "गल्प": "^ 3.9.1",
  2. npm स्थापित करें
  3. गुलाल शैली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.