Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use of reserved word 'let' in strict mode #208

Closed
mildrenben opened this issue Nov 20, 2017 · 3 comments
Closed

Use of reserved word 'let' in strict mode #208

mildrenben opened this issue Nov 20, 2017 · 3 comments

Comments

@mildrenben
Copy link

I recently upgraded to React 16 and added the PropTypes package, and now my tests won't run at all with the following error message:

PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
  SyntaxError: Use of reserved word 'let' in strict mode
  at webpack:///~/chai-as-promised/lib/chai-as-promised.js:3:0 <- test-bundler.js:21772

These are the project dependencies:

"dependencies": {
    "babel-core": "6.17.0",
    "babel-loader": "6.2.5",
    "babel-plugin-rewire": "1.1.0",
    "babel-plugin-transform-runtime": "6.15.0",
    "babel-polyfill": "6.23.0",
    "babel-preset-es2015": "6.14.0",
    "babel-preset-react": "6.11.1",
    "babel-preset-stage-0": "6.3.13",
    "babel-runtime": "6.11.6",
    "better-npm-run": "0.0.13",
    "compression": "1.6.2",
    "css-loader": "0.26.0",
    "cssnano": "3.7.4",
    "debug": "2.2.0",
    "deepmerge": "1.3.2",
    "eventsource-polyfill": "0.9.6",
    "extract-text-webpack-plugin": "1.0.0",
    "file-loader": "0.9.0",
    "file-saver": "1.3.3",
    "fs-extra": "1.0.0",
    "history": "3",
    "html-loader": "0.4.5",
    "html-webpack-plugin": "2.22.0",
    "imports-loader": "0.7.0",
    "ip": "1.1.2",
    "json-loader": "0.5.4",
    "json2csv": "3.7.3",
    "jspdf": "1.3.5",
    "karma-firefox-launcher": "1.0.1",
    "lodash": "4.17.4",
    "moment": "2.17.1",
    "normalize.css": "5.0.0",
    "numeral": "2.0.4",
    "postcss-cssnext": "2.9.0",
    "postcss-import": "9.1.0",
    "postcss-inline-svg": "2.3.0",
    "postcss-loader": "1.1.0",
    "postcss-modules": "0.6.3",
    "postcss-simple-vars": "3.0.0",
    "promise-polyfill": "6.0.2",
    "prop-types": "15.6.0",
    "react": "16.1.1",
    "react-datepicker": "0.56.0",
    "react-dom": "16.1.1",
    "react-modal": "3.1.2",
    "react-moment-proptypes": "1.3.0",
    "react-redux": "5.0.6",
    "react-router": "3",
    "react-router-redux": "4",
    "react-router-scroll": "0.4.2",
    "react-select": "1.0.0-rc.10",
    "react-stickynode": "1.4.0",
    "redux": "3.7.0",
    "redux-devtools-extension": "2.13.0",
    "redux-form": "7.1.2",
    "redux-form-saga": "0.1.0",
    "redux-persist": "4.8.0",
    "redux-responsive": "4.1.1",
    "redux-saga": "0.15.1",
    "rimraf": "2.5.4",
    "sinon-stub-promise": "4.0.0",
    "style-loader": "0.13.1",
    "svg-sprite-loader": "0.2.0",
    "uid": "0.0.2",
    "url-loader": "0.5.7",
    "webpack": "1.12.14",
    "whatwg-fetch": "2.0.3",
    "x2js": "3.1.1",
    "xlsx": "0.11.1",
    "yargs": "6.3.0"
  },
  "devDependencies": {
    "babel-eslint": "7.1.0",
    "babel-plugin-istanbul": "next",
    "chai": "4.1.2",
    "chai-as-promised": "7.1.1",
    "chai-enzyme": "0.8.0",
    "cheerio": "0.22.0",
    "codecov": "1.0.1",
    "concurrently": "3.4.0",
    "deep-freeze": "0.0.1",
    "enzyme": "3.2.0",
    "eslint": "3.0.1",
    "eslint-config-standard": "6.0.0",
    "eslint-config-standard-react": "4.0.0",
    "eslint-plugin-babel": "4.0.0",
    "eslint-plugin-promise": "3.0.0",
    "eslint-plugin-react": "6.0.0",
    "eslint-plugin-standard": "2.0.0",
    "express": "4.14.0",
    "json-server": "0.9.4",
    "karma": "1.7.1",
    "karma-chrome-launcher": "2.2.0",
    "karma-coverage": "1.1.1",
    "karma-mocha": "1.3.0",
    "karma-mocha-reporter": "2.2.5",
    "karma-phantomjs-launcher": "1.0.4",
    "karma-webpack-with-fast-source-maps": "1.10.2",
    "mocha": "4.0.1",
    "nodemon": "1.10.2",
    "phantomjs-prebuilt": "2.1.16",
    "querystring": "0.2.0",
    "redbox-react": "1.5.0",
    "redux-mock-store": "1.2.2",
    "sinon": "2.0.0-pre",
    "sinon-chai": "2.8.0",
    "webpack-bundle-size-analyzer": "2.6.0",
    "webpack-dev-middleware": "1.6.1",
    "webpack-hot-middleware": "2.12.2",
    "webpack-sources": "1.0.2"
  }

There is another error further up, so it's possible this is the cause:

ERROR in ./~/chai-enzyme/build/ReactTestWrapper.js
Module not found: Error: Cannot resolve module 'enzyme/build/react-compat' in /Users/MYNAME/git/MYPROJECT/node_modules/chai-enzyme/build
 @ ./~/chai-enzyme/build/ReactTestWrapper.js 9:19-55

This is the karma.config.js:

const argv = require('yargs').argv
const project = require('./project.config')
const webpackConfig = require('./webpack.config')
const debug = require('debug')('app:config:karma')

debug('Creating configuration.')
const karmaConfig = {
  basePath : '../', // project root in relation to bin/karma.js
  files    : [
    'node_modules/babel-polyfill/dist/polyfill.js',
    {
      pattern  : `./test-bundler.js`,
      watched  : false,
      served   : true,
      included : true
    }
  ],
  singleRun     : !argv.watch,
  frameworks    : ['mocha'],
  reporters     : ['mocha'],
  preprocessors : {
    [`./test-bundler.js`] : ['webpack']
  },
  browsers : ['PhantomJS'],
  webpack  : {
    devtool : 'cheap-module-source-map',
    resolve : Object.assign({}, webpackConfig.resolve, {
      alias : Object.assign({}, webpackConfig.resolve.alias, {
        sinon : 'sinon/pkg/sinon.js'
      })
    }),
    plugins : webpackConfig.plugins,
    module  : {
      noParse : [
        /\/sinon\.js/
      ],
      loaders : webpackConfig.module.loaders.concat([
        {
          test   : /sinon(\\|\/)pkg(\\|\/)sinon\.js/,
          loader : 'imports?define=>false,require=>false'
        }
      ])
    },
    // Enzyme fix, see:
    // https://github.com/airbnb/enzyme/issues/47
    externals : Object.assign({}, webpackConfig.externals, {
      'react/addons'                   : true,
      'react/lib/ExecutionEnvironment' : true,
      'react/lib/ReactContext'         : 'window'
    }),
    sassLoader : webpackConfig.sassLoader,
    postcss : webpackConfig.postcss
  },
  webpackMiddleware : {
    noInfo : true
  },
  coverageReporter : {
    reporters : project.coverage_reporters
  },
  mochaReporter: {
    showDiff: true
  }
}

if (project.globals.__COVERAGE__) {
  karmaConfig.reporters.push('coverage')
  karmaConfig.webpack.module.preLoaders = [{
    test    : /\.(js|jsx)$/,
    include : new RegExp(project.dir_client),
    exclude : /node_modules/,
    loader  : 'babel',
    query   : Object.assign({}, project.compiler_babel, {
      plugins : (project.compiler_babel.plugins || []).concat('istanbul')
    })
  }]
}

module.exports = (cfg) => cfg.set(karmaConfig)

Anyone have any ideas as to why this isn't working now?

@ayrton
Copy link
Contributor

ayrton commented Nov 20, 2017

Can you confirm this error does not originate from chai-as-promised as suggested in the error message? Feel free to re-open if this is chai-enzyme's fault.

@ayrton ayrton closed this as completed Nov 20, 2017
@mildrenben
Copy link
Author

@ayrton Fixed the chai-as-promised issue. Now it definitely appears to be chai-enzyme.

PhantomJS 2.1.1 (Mac OS X 0.0.0) ERROR
  Error: Cannot find module "enzyme/build/react-compat"
  at webpack:///~/chai-enzyme/build/ReactTestWrapper.js:9:0 <- test-bundler.js:91728

Is this just incorrect versions of enzyme? I'm using 3.2.0

@ayrton
Copy link
Contributor

ayrton commented Nov 20, 2017

@mildrenben you have to use the beta version of chai-enzyme if you're using enzyme > 3. See #199 for more information.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants