waypoints icon indicating copy to clipboard operation
waypoints copied to clipboard

Sticky is not a constructor

Open Bobz-zg opened this issue 9 years ago • 5 comments

__WEBPACK_IMPORTED_MODULE_3_waypoints_lib_jquery_waypoints_min___default.a.Sticky is not a constructor

when using like:

import Waypoint from 'waypoints/lib/jquery.waypoints.min';
import Sticky from 'waypoints/lib/shortcuts/sticky.min';

new Waypoint.Sticky({
	element: $('.home .logo')[0],
});

Any advice about how to use shortcuts with webpack?

Bobz-zg avatar Apr 30 '17 11:04 Bobz-zg

I don’t think Waypoint works as a ES6 module yet. You might have to import the scripts as globals like:

import 'waypoints/lib/jquery.waypoints.min'
import 'waypoints/lib/shortcuts/sticky.min'

new Waypoint.Sticky({
  element: $('.home .logo')[0]
})

vincentorback avatar May 18 '17 09:05 vincentorback

I'm not using ES6 and also having this issue. Importing via bower.

pandabrand avatar Jul 28 '17 15:07 pandabrand

Doesn't work with the inview, either:

import "waypoints/lib/noframework.waypoints.js";
import "waypoints/lib/shortcuts/inview";

sroberson avatar Nov 19 '17 18:11 sroberson

Works for me:

import waypoint from 'waypoints/lib/jquery.waypoints.min';
import inview from 'waypoints/lib/shortcuts/inview';

ndq11 avatar Jan 16 '19 19:01 ndq11

I managed to make it work like this using Webpack 4.x:

  1. Define Waypoints base library as Webpack External:
webpackConfig.externals =  {
        jquery: 'jQuery',
	'waypoints/lib/jquery.waypoints': 'jQuery.fn.waypoint', // needed to make sticky / inview shortcuts work
}
  1. Load Waypoints base library before my vendors.js

  2. initialise like this:

import 'waypoints/lib/jquery.waypoints';
import 'waypoints/lib/shortcuts/inview.min.js';

new Waypoint.Inview({
	element: $myElement,
	entered: () => {},
	exit: () => {},
});

janwidmer avatar Jan 07 '20 08:01 janwidmer