Browser-sync: Unexpected Token { in browser console on fresh new yeoman+fountainJS projects

Created on 24 Jan 2018  路  8Comments  路  Source: BrowserSync/browser-sync

Issue details

I'm using Yeoman with FountainJS to generate a new project.
As soon as it finish assembling it, I simply run the classic npm run serve. It finishes without errors but then I get this error in chrome browser console:

Uncaught SyntaxError: Unexpected token }

The error is reported to be generated from browser-sync-client.js?v=2.23.5:89.
My doubt is if the issue is actually in browserSync or in something else built by fountainJS package.
I tried building an angularJS (simple landing page) and angular (todo mcv) project but the error persist with both cases even if they're different framework/languages/source.

Steps to reproduce/test case

  1. Install Yeoman
  2. Add fountainJS
  3. Generate a project (keep it simple, I didn't continuous integration support for example)
  4. run npm run serve
  5. Open the browser to the newly running webserver
  6. Open the console

Please specify which version of Browsersync, node and npm you're running

From package,json:

  • "browser-sync": "^2.18.8",
  • "browser-sync-spa": "^1.0.3",

Others:

  • Node v9.3.0
  • Npm 5.6.0

Affected platforms

  • windows

Browsersync use-case

  • API
  • GULP

for all other use-cases, (gulp, grunt etc), please show us exactly how you're using Browsersync

From gulpfile.js:

const browserSync = require('browser-sync');

// [...]

function reloadBrowserSync(cb) {
  browserSync.reload();
  cb();
}

function watch(done) {
  gulp.watch(conf.path.tmp('index.html'), reloadBrowserSync);
  done();
}

Most helpful comment

@johanberonius @theCrius please try [email protected]

All 8 comments

I got this error too and figured out that browser-sync-client.js ends with the line //# sourceMappingURL=index.min.js.map but no newline after that.

When other plugins concatenate to that script the first line of the plugin script get corrupted.

For example, with browser-sync-ui the line becomes //# sourceMappingURL=index.min.js.map"use strict"; but the rest of the script till works.

But with browser-sync-spa the line becomes //# sourceMappingURL=index.min.js.map(function (bs) { and the rest of the script breaks.

_(Also commented on the issue here: https://github.com/BrowserSync/browser-sync-client/issues/45)_

My temporary workaround is to remove the line with sourceMappingURL after install since /browser-sync/index.min.js.map doesn't seem to be served anyway.

In package.json:
"postinstall": "FILE=node_modules/browser-sync/client/dist/index.min.js; mv $FILE $FILE.bak; grep -v sourceMappingURL $FILE.bak > $FILE"

@johanberonius Thanks for investigating :)

I will fix & release within a few hours.

@johanberonius @theCrius please try [email protected]

Will do first thing in the morning (UK here)

Thanks for the quick fix :)

Yes, it works. Thanks for the quick fix!

@johanberonius thanks to you for finding the bug!

Confirmed as well, it's fixed. Thanks to both of you!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

hgl picture hgl  路  3Comments

tonyoconnell picture tonyoconnell  路  3Comments

jitendravyas picture jitendravyas  路  4Comments

demisx picture demisx  路  4Comments

adjavaherian picture adjavaherian  路  4Comments