alex-seville / blanket

blanket.js is a simple code coverage library for javascript. Designed to be easy to install and use, for both browser and nodejs.
http://blanketjs.org
Other
1.41k stars 177 forks source link

_$jscoverage is not defined | blanket 1.2.1 #554

Open NedalKouissi opened 8 years ago

NedalKouissi commented 8 years ago

I'm using blanket 1.2.1 with mocha, it gives me this error ! i must downgrade to 1.1.9 to make it work :'(

Snippets from Package.json

"scripts": { "test": "mocha && mocha --require blanket -R html-cov > coverage.html" }, "config": { "blanket": { "pattern": "index.js", "data-cover-never": ["node_modules", "test"] } }

The error

Error: BLANKET-Error parsing instrumented code: ReferenceError: _$jscoverage is not defined at /home/idsfn/Documents/training/mochaGettingStarted/node_modules/blanket/src/index.js:177:37 at Object.__dirname.blanket._blanket.instrument (/home/idsfn/Documents/training/mochaGettingStarted/node_modules/blanket/src/blanket.js:126:17) at Object.require.extensions..js (/home/idsfn/Documents/training/mochaGettingStarted/node_modules/blanket/src/index.js:158:25) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Module.require (module.js:354:17) at require (internal/module.js:12:17) at Object.<anonymous> (/home/idsfn/Documents/training/mochaGettingStarted/test/index.js:4:12) at Module._compile (module.js:410:26) at Module._extensions..js (module.js:417:10) at Object.require.extensions..js (/home/idsfn/Documents/training/mochaGettingStarted/node_modules/blanket/src/index.js:144:17) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Module.require (module.js:354:17) at require (internal/module.js:12:17) at /home/idsfn/Documents/training/mochaGettingStarted/node_modules/mocha/lib/mocha.js:219:27 at Array.forEach (native) at Mocha.loadFiles (/home/idsfn/Documents/training/mochaGettingStarted/node_modules/mocha/lib/mocha.js:216:14) at Mocha.run (/home/idsfn/Documents/training/mochaGettingStarted/node_modules/mocha/lib/mocha.js:468:10) at Object.<anonymous> (/home/idsfn/Documents/training/mochaGettingStarted/node_modules/mocha/bin/_mocha:403:18) at Module._compile (module.js:410:26) at Object.Module._extensions..js (module.js:417:10) at Module.load (module.js:344:32) at Function.Module._load (module.js:301:12) at Function.Module.runMain (module.js:442:10) at startup (node.js:136:18) at node.js:966:3

NedalKouissi commented 8 years ago

@alex-seville, what up brother !

thom4parisot commented 8 years ago

I encountered this issue as well and reverted to 1.1.9 too to make it work.

westy92 commented 8 years ago

I just experienced this same error. What are you reverting to version 1.9.1?

NedalKouissi commented 8 years ago

@westy92 npm install --save-dev blanket@1.9.1, you may need sudo :)

westy92 commented 8 years ago

If 1.2.1 is the latest version, how can 1.9.1 exist? Something doesn't add up. Do you mean 1.1.9?

NedalKouissi commented 8 years ago

@westy92 yes you're right!

alex-seville commented 8 years ago

I've published a new version, 1.2.2. Let me know if it changes anything.

thom4parisot commented 8 years ago

Hm sadly I still encounter the issue with node@0.10. Here is the trace:

> mocha -r env-test -r blanket -R html-cov test/*.js > coverage.html

/Users/oncletom/workspace/freebird/feed-parser/node_modules/blanket/src/index.js:179
                            throw e;
                            ^

Error: BLANKET-Error parsing instrumented code: ReferenceError: _$jscoverage is not defined
    at /Users/oncletom/workspace/freebird/feed-parser/node_modules/blanket/src/index.js:177:37
    at Object.__dirname.blanket._blanket.instrumentSync (/Users/oncletom/workspace/freebird/feed-parser/node_modules/blanket/src/blanket.js:134:21)
    at Object.__dirname.blanket._blanket.instrument (/Users/oncletom/workspace/freebird/feed-parser/node_modules/blanket/src/blanket.js:141:22)
    at Object.require.extensions..js (/Users/oncletom/workspace/freebird/feed-parser/node_modules/blanket/src/index.js:158:25)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/Users/oncletom/workspace/freebird/feed-parser/test/parse-feed.js:3:11)
    at Module._compile (module.js:410:26)
    at Module._extensions..js (module.js:417:10)
    at Object.require.extensions..js (/Users/oncletom/workspace/freebird/feed-parser/node_modules/blanket/src/index.js:144:17)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)
    at /Users/oncletom/workspace/freebird/feed-parser/node_modules/mocha/lib/mocha.js:219:27
    at Array.forEach (native)
    at Mocha.loadFiles (/Users/oncletom/workspace/freebird/feed-parser/node_modules/mocha/lib/mocha.js:216:14)
    at Mocha.run (/Users/oncletom/workspace/freebird/feed-parser/node_modules/mocha/lib/mocha.js:468:10)
    at Object.<anonymous> (/Users/oncletom/workspace/freebird/feed-parser/node_modules/mocha/bin/_mocha:403:18)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3

And a partial npm ls:

├─┬ blanket@1.2.2
│ ├── acorn@1.2.2
│ ├─┬ falafel@1.2.0
│ │ └── acorn@1.2.2
│ ├── foreach@2.0.5
│ ├── isarray@0.0.1
│ └── object-keys@1.0.9
ufocoder commented 8 years ago

+1

alex-seville commented 8 years ago

Hmm, it's working on travis CI at node@0.10 - https://travis-ci.org/alex-seville/blanket/jobs/110242642

vaunus commented 8 years ago

Same issue here when trying to use "use strict"; at the top of some of my project files using blanket 1.2.2.

A very simple example of this: test.js:

let abc = 123;

Error: BLANKET-Error parsing instrumented code: SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

Fine, so I add use strict: test.js:

'use strict';
let abc = 123;

And the output:

# mocha --require blanket test.js
/Volumes/workspace/sss/mobile-api/node_modules/blanket/src/index.js:179
                            throw e;
                            ^

Error: BLANKET-Error parsing instrumented code: ReferenceError: _$jscoverage is not defined
    at /Volumes/workspace/sss/mobile-api/node_modules/blanket/src/index.js:177:37
    at Object.__dirname.blanket._blanket.instrumentSync (/Volumes/workspace/sss/mobile-api/node_modules/blanket/src/blanket.js:134:21)
    at Object.__dirname.blanket._blanket.instrument (/Volumes/workspace/sss/mobile-api/node_modules/blanket/src/blanket.js:141:22)
    at Object.require.extensions..js (/Volumes/workspace/sss/mobile-api/node_modules/blanket/src/index.js:158:25)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at /Volumes/workspace/sss/mobile-api/node_modules/mocha/lib/mocha.js:219:27
    at Array.forEach (native)
    at Mocha.loadFiles (/Volumes/workspace/sss/mobile-api/node_modules/mocha/lib/mocha.js:216:14)
    at Mocha.run (/Volumes/workspace/sss/mobile-api/node_modules/mocha/lib/mocha.js:468:10)
    at Object.<anonymous> (/Volumes/workspace/sss/mobile-api/node_modules/mocha/bin/_mocha:403:18)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:141:18)
    at node.js:933:3

Snippet from my package.json:

"blanket": {
  "pattern": "///[\\w-_]+\\.js$/",
    "data-cover-never": [
      "/node_modules/",
      "/test/"
    ],
    "data-cover-ecmaVersion": 6,
    "data-cover-reporter-options": {
      "relativepath": true
    }
}

Tested on various versions of Node 4 and 5.

alex-seville commented 8 years ago

Sounds like you're using ES6, you'll need to let Blanket know: https://github.com/alex-seville/blanket/blob/master/docs/options.md#data-cover-ecmaversion

vaunus commented 8 years ago

I have already let Blanket know I'm using ES6. See the snippet from my package.json above which has the "data-cover-ecmaVersion": 6 parameter.

We are using ES6 throughout our codebase but have had to wrap most ES6 files in a function wrapper to get Blanket to work. This doesn't work for top-level files however such as app.js. As soon as I add "use strict"; to this I get this error so we are unable to use ES6 features in these files.

I can reproduce this in a simple example: test.js:

var abc = 123;
mocha --require blanket test.js 
  0 passing (2ms)

However: test.js:

'use strict';
var abc = 123;
# mocha --require blanket test.js 
/usr/local/lib/node_modules/blanket/src/index.js:179
                            throw e;
                            ^

Error: BLANKET-Error parsing instrumented code: ReferenceError: _$jscoverage is not defined
    at /usr/local/lib/node_modules/blanket/src/index.js:177:37
    at Object.__dirname.blanket._blanket.instrumentSync (/usr/local/lib/node_modules/blanket/src/blanket.js:134:21)
    at Object.__dirname.blanket._blanket.instrument (/usr/local/lib/node_modules/blanket/src/blanket.js:141:22)
    at Object.require.extensions..js (/usr/local/lib/node_modules/blanket/src/index.js:158:25)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at /usr/local/lib/node_modules/mocha/lib/mocha.js:219:27
    at Array.forEach (native)
    at Mocha.loadFiles (/usr/local/lib/node_modules/mocha/lib/mocha.js:216:14)
    at Mocha.run (/usr/local/lib/node_modules/mocha/lib/mocha.js:468:10)
    at Object.<anonymous> (/usr/local/lib/node_modules/mocha/bin/_mocha:403:18)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:141:18)
    at node.js:933:3
abienkowski commented 8 years ago

This is has been around for a long time, originally report Dec.2013.

I need to run npm install blanket@1.1.6 to make my tests run.

markvandenbrink commented 8 years ago

Same problem here (_$jscoverage is not defined) when using 1.2.1 or 1.2.2. Reverting back to 1.1.9 as workaround.

frankred commented 8 years ago

Same with me...

sbefort commented 8 years ago

Same with me...

rlk833 commented 8 years ago

Same here. Busted. We absolutely need ecmaVersion 6. Tried going to a lower version and other problems occur because of no ecmaVersion 6 support.

kousha-icracked commented 8 years ago

I'm having the same problem when using ES6. Running 1.1.9 causes another problem:

Error: BLANKET-Error parsing instrumented code: Error: BLANKET-Error parsing instrumented code: Error: BLANKET-Error parsing instrumented code: Error: Line 17: Unexpected token )

Anyone has a solution?

rbudiharso commented 8 years ago

I'm having this problem too with blanket 1.2.3

selfagency commented 7 years ago

I too am having this problem with 1.2.3 using es6

> nylon-web@2.5.0 test /Users/ds/Dev/nylon-web
> multi='dot=- html-cov=coverage.html' ./node_modules/mocha/bin/mocha -r blanket --reporter mocha-multi --no-colors "src/app/app.js"

/Users/ds/Dev/nylon-web/node_modules/blanket/src/index.js:180
                            throw e;
                            ^

Error: BLANKET-Error parsing instrumented code: ReferenceError: _$jscoverage is not defined
    at /Users/ds/Dev/nylon-web/node_modules/blanket/src/index.js:178:37
    at Object.__dirname.blanket._blanket.instrumentSync (/Users/ds/Dev/nylon-web/node_modules/blanket/src/blanket.js:134:21)
    at Object.__dirname.blanket._blanket.instrument (/Users/ds/Dev/nylon-web/node_modules/blanket/src/blanket.js:141:22)
    at Object.require.extensions..js (/Users/ds/Dev/nylon-web/node_modules/blanket/src/index.js:159:25)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:20:19)
    at /Users/ds/Dev/nylon-web/node_modules/mocha/lib/mocha.js:222:27
    at Array.forEach (native)
    at Mocha.loadFiles (/Users/ds/Dev/nylon-web/node_modules/mocha/lib/mocha.js:219:14)
    at Mocha.run (/Users/ds/Dev/nylon-web/node_modules/mocha/lib/mocha.js:487:10)
    at Object.<anonymous> (/Users/ds/Dev/nylon-web/node_modules/mocha/bin/_mocha:459:18)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Function.Module.runMain (module.js:447:10)
    at startup (node.js:148:18)
    at node.js:405:3