7

I've just imported my Reactjs project to a new machine on Ubuntu and installed most dependencies with npm install successfully bar the following:

npm WARN optional Skipping failed optional dependency /react-scripts/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]
npm WARN optional Skipping failed optional dependency /chokidar/fsevents:
npm WARN notsup Not compatible with your operating system or architecture: [email protected]

Trying to run the project with npm start fails with:

> [email protected] start /root/17-visit-booker-frontend
> react-scripts start


/root/17-visit-booker-frontend/node_modules/react-scripts/scripts/start.js:33
const {
      ^

SyntaxError: Unexpected token {
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    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

npm ERR! Linux 4.4.0-81-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "start"
npm ERR! node v4.2.6
npm ERR! npm  v3.5.2
npm ERR! code ELIFECYCLE
npm ERR! [email protected] start: `react-scripts start`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script 'react-scripts start'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the booking-frontend package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     react-scripts start
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs booking-frontend
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls booking-frontend
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /root/17-visit-booker-frontend/npm-debug.log

Attempting to run any npm script including npm run build all fails with the exact same error referencing the same lines in each file in the SyntaxError:

SyntaxError: Unexpected token {
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    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

Running the same scripts on my original machine, a Mac, succeed.

I've tried re-installing node/npm which do not fix the issue. Is the supposedly optional dependency causing this to fail?

Any help is appreciated.

3
  • And what is at /root/17-visit-booker-frontend/node_modules/react-scripts/scripts/start.js:33, line 33? Commented Jul 14, 2017 at 17:03
  • Lines 33 - 38: const { choosePort, createCompiler, prepareProxy, prepareUrls, } = require('react-dev-utils/WebpackDevServerUtils'); where the only thing occupying line 33 is const { and each comma-separated item is on a new line. Commented Jul 14, 2017 at 17:05
  • Although this referenced line will change depending on what script I run but will always fail when it hits a curly brace. It then fails with a SyntaxError and quotes the above stack trace which is identical no matter what script it fails on. Running npm run build causes it to complain with : /root/17-visit-booker-frontend/node_modules/react-scripts/scripts/build.js:60 ({ stats, previousFileSizes, warnings }) => { and points at the first occurrence of a curly brace. Commented Jul 14, 2017 at 17:08

1 Answer 1

10

You're using node.js v4 which does not by default support destructuring syntax (the const {field1, field2, ....} = object) that it is failing on.

You have two options:

  1. Install a newer version of Node.js
  2. Run node with the harmony flags that will enable this feature in version 4.x.
Sign up to request clarification or add additional context in comments.

3 Comments

The specific flag that would enable this is --harmony-destructuring, so running node --harmony-destructuring should allow this to be used.
Thanks for this! I'm surprised how little results about this turned up when I was googling this problem.
Node 8 wasn't working for me either. I swapped to 12 and it no longer gave me an error

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.