gulp: "Error: Unable to execute function print"

I'm attempting to compile Semantic-UI using gulp in a specific directory, but I keep encountering the following errors:

root@ks4000003:/var/www/mg.guylabbe.ca/web/inc/semantic# gulp build
[10:36:53] Using gulpfile /var/www/clients/client1/web179/web/inc/semantic/gulpfile.js
[10:36:53] Starting 'build'...
Building Semantic
[10:36:53] Starting 'build-javascript'...
Building Javascript
[10:36:54] 'build-javascript' errored after 19 ms
[10:36:54] TypeError: print is not a function
    at Gulp.module.exports (/var/www/clients/client1/web179/web/inc/semantic/tasks/build/javascript.js:64:11)
    at module.exports (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/lib/runTask.js:34:7)
    at Gulp.Orchestrator._runTask (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/index.js:273:3)
    at Gulp.Orchestrator._runStep (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/index.js:214:10)
    at Gulp.Orchestrator.start (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/index.js:134:8)
    at runNextSet (/var/www/clients/client1/web179/web/inc/node_modules/run-sequence/index.js:124:15)
    at runSequence (/var/www/clients/client1/web179/web/inc/node_modules/run-sequence/index.js:136:2)
    at Gulp.module.exports (/var/www/clients/client1/web179/web/inc/semantic/tasks/build.js:49:3)
    at module.exports (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/lib/runTask.js:34:7)
    at Gulp.Orchestrator._runTask (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/index.js:273:3)
[10:36:54] 'build' errored after 21 ms
[10:36:54] TypeError in plugin "run-sequence(build-javascript)"
Message:
    print is not a function
Stack:
TypeError: print is not a function
    at Gulp.module.exports (/var/www/clients/client1/web179/web/inc/semantic/tasks/build/javascript.js:64:11)
    at module.exports (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/lib/runTask.js:34:7)
    at Gulp.Orchestrator._runTask (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/index.js:273:3)
    at Gulp.Orchestrator._runStep (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/index.js:214:10)
    at Gulp.Orchestrator.start (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/index.js:134:8)
    at runNextSet (/var/www/clients/client1/web179/web/inc/node_modules/run-sequence/index.js:124:15)
    at runSequence (/var/www/clients/client1/web179/web/inc/node_modules/run-sequence/index.js:136:2)
    at Gulp.module.exports (/var/www/clients/client1/web179/web/inc/semantic/tasks/build.js:49:3)
    at module.exports (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/lib/runTask.js:34:7)
    at Gulp.Orchestrator._runTask (/var/www/clients/client1/web179/web/inc/node_modules/orchestrator/index.js:273:3)

When checking the javascript.js file, it appears that gulp-print is correctly loaded:

var print = require('gulp-print');

and used (line 8 below):

  // copy source javascript
  gulp.src(source.definitions + '/**/' + globs.components + '.js')
    .pipe(plumber())
    .pipe(flatten())
    .pipe(replace(comments.license.in, comments.license.out))
    .pipe(gulp.dest(output.uncompressed))
    .pipe(gulpif(config.hasPermission, chmod(config.permission)))
    .pipe(print(log.created))
    .pipe(uglify(settings.uglify))
    .pipe(rename(settings.rename.minJS))
    .pipe(gulp.dest(output.compressed))
    .pipe(gulpif(config.hasPermission, chmod(config.permission)))
    .pipe(print(log.created))
    .on('end', function() {
      gulp.start('package compressed js');
      gulp.start('package uncompressed js');
      callback();
    })
  ;

Gulp version:

[10:42:25] CLI version 3.9.1
[10:42:25] Local version 3.9.1

Any insights on this issue would be greatly appreciated! Thank you!

Answer №1

When working with the gulpPrint function as a default export, it's necessary to make some adjustments when importing gulp dependencies. Instead of:

var print = require('gulp-print');

You should use:

var print = require('gulp-print').default;
// example usage
print();

This way, the gulpPrint(); function is now known as print();

Alternatively, you can also utilize it like this:

var print = require('gulp-print');
// example usage
print.default()

If confused, try dumping the variable contents using console.log(print) for better understanding, especially if you are new to this concept.

Answer №2

The modifications mentioned in the initial response have already been integrated into semantic-ui's guilpfile.js. Nevertheless, I encountered the same issue when executing gulp build.

This problem stemmed from using an outdated version of gulp-print. Once I upgraded to the latest version, gulp successfully compiled:

npm install <a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="680f1d041845181a01061c285d46584658">[email protected]</a> --save-dev

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Only the homepage experiences issues with the Bootstrap 4 mobile navigation menu failing to remain open

http://example.com/index.html I am in the process of building my first website using Bootstrap 4 beta. I have encountered an issue with the mobile navigation menu specifically on the HOME PAGE. When clicking the hamburger icon, the nav menu opens briefly ...

Rendering React components in a predetermined sequence for an interactive user experience

I am working with a component that includes multiple images and I need to render them dynamically based on predetermined data. <ImageComponent image={this.props.data.image1} /> <ImageComponent image={this.props.data.image2} /> <Imag ...

Having trouble with the JQuery scrollTop animation? Getting the error message "Cannot read property 'top' of undefined"?

I am having trouble with my jquery animation scrollTop function. Whenever I click on <a>, it takes me to the anchor without any animation. Can someone please provide a solution for this issue? Upon running the webpage, I encountered an error message ...

Utilize Node.js to traverse an array of objects and extract particular values to create a separate array

Looking to extract scores from the ratings array for each object and compile them into a new array. For instance, for post with post_id: "5e1223c2383ce049d8b32eb5", the associated array should be [1, 4]. And for the post with post_id "5e146b993dde720850c1 ...

Storing items in a pre-save hook using Mongoose

I have files that I need to generate, but these files include links, so the structure of the file looks like this: const file = { name: 'some name', content: 'some content, type: 'file type', links: [{ path: 'some ...

Mechanism for creating variables in Angular through factory services

While delving into the world of angular1, I encountered services and factories. Using the .factory() method, I passed in a string that represented the desired service name. Surprisingly, I found myself able to reference a variable matching this string wi ...

The installation of Cypress encounters an issue with the error message stating that the application cannot be retrieved

I encountered an issue while trying to install cypress on a machine within a corporate firewall. The error message I received during npm install was "App could not be downloaded." Here are the steps I took to try and resolve this error: 1. Set the http a ...

Tips for utilizing onsubmit following an ajax validation check

How can I implement the onsubmit method after an ajax check? The current onsubmit function is not working. $(document).ready(function(){ $("#p_code").change(function(){ $("#message").html("<img src='ajax_loader.gif' width='26 ...

Assistance with JSONP (Without the use of jQuery)

I've been putting in a lot of effort trying to understand how to make a JSONP request, but all the reference materials I find are full of jQuery examples. I can go through the jQuery source code, but I prefer a straightforward and simple example. I&ap ...

How does webpack identify the index.html file as the entry point for loading the bundle.js file?

I've noticed that without specifying a command to load index.html, webpack is automatically loading the page whenever I make changes in a file. Below are the attached files: webpack.config.js and package.json webpack.config.js var config = { entry: ...

Retrieve attributes of an html element modified by AJAX request

I am currently developing a small project that involves performing CRUD operations on a MySQL table using PHP and jQuery. The table is integrated into the layout in the following manner: <?php require '../connect.php'; $sql = "SELECT id ...

Tips for packaging NPM packages from the local directory

Hey there! I recently downloaded an npm module from GitHub and made some changes to it. Now, I am trying to install it locally using `npm install`, but the files are not being compiled and I am still seeing .ts instead of .js files. I have tried following ...

What is the best way to organize a complicated array of arrays in JavaScript?

Within my code, there exists an array known as generationArray. Each array contained within generationArray consists of 252 elements. The first 250 elements serve as internal coding data, while the final two positions are designated for sorting criteria. T ...

Switching effortlessly between Fixed and Relative positioning

As I work on creating a unique scrolling experience, I aim to have elements stop at specific points and animate before returning to normal scroll behavior once the user reaches the final point of the page. Essentially, when div X reaches the middle of the ...

What is the best way to retrieve data from Firebase and then navigate to a different page?

I am facing an issue with my app where I have a function that retrieves data from Firebase. However, after the completion of this Firebase function, I need to redirect it to another page. The problem is that when I press the button, the redirection happe ...

Tips for validating a URL in Cypress without having to actually visit the page

Is there a way to verify the URL without actually opening the page? The application is built on AngularJS and uses the ng-click method ($state.go) for navigation. I've researched Cypress stub and intercept options, but haven't found any solutions ...

Message display showing an "[object Object]" (Node Express Passport)

Having an issue with my passport.js implementation where the flash message is not showing up when the username or password is incorrect. The logic was working fine before, but now it's broken even after copying the working version step by step. Flash ...

Angular 11 - New Script Inserted into scripts Directory and Linked in angular.json Configuration

I just added a new script file in the src/assets/scripts directory and updated its path in the scripts section of angular.json. My question is: Will I need to restart ng serve for the changes to take effect the next time the application is run? Thank you ...

Ways to initiate a change event once all multiselect choices have been finalized

I am struggling with a multiselect dropdown element that contains check boxes in my application. The issue I am facing is that the change function associated with this element gets triggered every time a check box is clicked. I would like the change functi ...

Unexpected outcome from querying an element within an array located in an object in a mongoose schema

Presently, I am facing an issue with a mongoose schema structure. It appears as follows: { "_id" : ObjectId("some_id"), "repDet" : { "devIDs" : [ "dev1_B37", "dev2_B38", "dev3_B26" ], ...