laravel-elixir-webpack-official
laravel-elixir-webpack-official copied to clipboard
Laravel Echo dies, when using gulp, because of missing pusher-js
Laravel Echo dies, when using gulp, because of missing pusher-js. Even, if developer does not use pusher-js, but redis/socket duo, pusher-js must be installed.
I am talking about line#684 in laravel-echo\dist\echo.js
window['Pusher'] = require('pusher-js');
In Laravel 5.3 docs it says:
we will also install the pusher-js package since we will be using the Pusher broadcaster
in section with Pusher example, it also shows this npm install code:
npm install --save laravel-echo pusher-js
So, anyone using pusher, has not problem, but people using redis/socket may have a problem as they may not bother to install pusher-js, since they do not intend to use it.
I think that either:
- mentioned echo.js code should be changed to prevent error from surfacing,
- or docs must clearly state, that pusher-js has to be installed via npm (even, if not used)
- or maybe just adding it to dependencies list in package.json can help - that is if anyone bothers to run npm install
Anyway, it would be a good idea to fix this and save some people ulcers ;)
Aside from pusher: Remember folks to update to newest node.js, or you are going to get a lot of webpack errors.
Order of things ;) Put io client above app.js, e.g.:
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.2/socket.io.min.js"></script>
<script src="/js/app.js"></script>
or you are going to get undefined 'io'. Anyway, docs state that explicitly:
If you are going to pair the Redis broadcaster with a Socket.IO server, you will need to include the Socket.IO JavaScript client library in your application's head HTML element
Error thrown (if anyone cares to read):
[22:59:06] Using gulpfile U:\www\la5\gulpfile.js [22:59:06] Starting 'all'... [22:59:06] Starting 'sass'... [22:59:08] Finished 'sass' after 2.03 s [22:59:08] Starting 'webpack'... { [Error: ./~/laravel-echo/dist/echo.js Module not found: Error: Can't resolve 'pusher-js' in 'U:\www\la5\node_modules\laravel-echo\dist' resolve 'pusher-js' in 'U:\www\la5\node_modules\laravel-echo\dist' Parsed request is a module using description file: U:\www\la5\node_modules\laravel-echo\package.json (relative path: ./dist) Field 'browser' doesn't contain a valid alias configuration after using description file: U:\www\la5\node_modules\laravel-echo\package.json (relative path: ./dist) resolve as module U:\www\node_modules doesn't exist or is not a directory U:\node_modules doesn't exist or is not a directory U:\www\la5\node_modules\laravel-echo\dist\node_modules doesn't exist or is not a directory U:\www\la5\node_modules\node_modules doesn't exist or is not a directory U:\www\la5\node_modules\laravel-echo\node_modules doesn't exist or is not a directory looking for modules in U:\www\la5\node_modules using description file: U:\www\la5\package.json (relative path: ./node_modules) Field 'browser' doesn't contain a valid alias configuration after using description file: U:\www\la5\package.json (relative path: ./node_modules) using description file: U:\www\la5\package.json (relative path: ./node_modules/pusher-js) as directory U:\www\la5\node_modules\pusher-js doesn't exist no extension Field 'browser' doesn't contain a valid alias configuration U:\www\la5\node_modules\pusher-js doesn't exist .js Field 'browser' doesn't contain a valid alias configuration U:\www\la5\node_modules\pusher-js.js doesn't exist .json Field 'browser' doesn't contain a valid alias configuration U:\www\la5\node_modules\pusher-js.json doesn't exist [U:\www\node_modules] [U:\node_modules] [U:\www\la5\node_modules\laravel-echo\dist\node_modules] [U:\www\la5\node_modules\node_modules] [U:\www\la5\node_modules\laravel-echo\node_modules] [U:\www\la5\node_modules\pusher-js] [U:\www\la5\node_modules\pusher-js] [U:\www\la5\node_modules\pusher-js.js] [U:\www\la5\node_modules\pusher-js.json] @ ./~/laravel-echo/dist/echo.js 684:35-55 @ ./resources/assets/js/bootstrap.js @ ./resources/assets/js/app.js] message: './~/laravel-echo/dist/echo.js\nModule not found: Error: Can\'t resolve \'pusher-js\' in \'U:\\www\\la5\\node_modules\\laravel-echo\\dist\'\nresolve \'pusher-js\' in \'U:\\www\\la5\\node_modules\\laravel-echo\\dist\'\n Parsed request is a module\n using description file: U:\\www\\la5\\node_modules\\laravel-echo\\package.json (relative path: ./dist)\n Field \'browser\' doesn\'t contain a valid alias configuration\n after using description file: U:\\www\\la5\\node_modules\\laravel-echo\\package.json (relative path: ./dist)\n resolve as module\n U:\\www\\node_modules doesn\'t exist or is not a directory\n U:\\node_modules doesn\'t exist or is not a directory\n U:\\www\\la5\\node_modules\\laravel-echo\\dist\\node_modules doesn\'t exist or is not a directory\n U:\\www\\la5\\node_modules\\node_modules doesn\'t exist or is not a directory\n U:\\www\\la5\\node_modules\\laravel-echo\\node_modules doesn\'t exist or is not a directory\n looking for modules in U:\\www\\la5\\node_modules\n using description file: U:\\www\\la5\\package.json (relative path: ./node_modules)\n Field \'browser\' doesn\'t contain a valid alias configuration\n after using description file: U:\\www\\la5\\package.json (relative path: ./node_modules)\n using description file: U:\\www\\la5\\package.json (relative path: ./node_modules/pusher-js)\n as directory\n U:\\www\\la5\\node_modules\\pusher-js doesn\'t exist\n no extension\n Field \'browser\' doesn\'t contain a valid alias configuration\n U:\\www\\la5\\node_modules\\pusher-js doesn\'t exist\n .js\n Field \'browser\' doesn\'t contain a valid alias configuration\n U:\\www\\la5\\node_modules\\pusher-js.js doesn\'t exist\n .json\n Field \'browser\' doesn\'t contain a valid alias configuration\n U:\\www\\la5\\node_modules\\pusher-js.json doesn\'t exist\n[U:\\www\\node_modules]\n[U:\\node_modules]\n[U:\\www\\la5\\node_modules\\laravel-echo\\dist\\node_modules]\n[U:\\www\\la5\\node_modules\\node_modules]\n[U:\\www\\la5\\node_modules\\laravel-echo\\node_modules]\n[U:\\www\\la5\\node_modules\\pusher-js]\n[U:\\www\\la5\\node_modules\\pusher-js]\n[U:\\www\\la5\\node_modules\\pusher-js.js]\n[U:\\www\\la5\\node_modules\\pusher-js.json]\n @ ./~/laravel-echo/dist/echo.js 684:35-55\n @ ./resources/assets/js/bootstrap.js\n @ ./resources/assets/js/app.js', showStack: false, showProperties: true, plugin: 'webpack-stream', __safety: { toString: [Function: bound ] } }