6

I have a React-router set up which uses parametrized routes:

<Route path="/comments" comments={comments.commentsArray} component={NewReactElement} />
    <Route path="/comments/:id" component={Comment} />

The error: SyntaxError: expected expression, got '<'

I have researched the error, and found out it was happening when the server tries to get a .js/.css/other file, but is returned HTML beginning with <!DOCTYPE> instead, so I set up the express.static, but when entering URL such as comments/1250, it still returns: SyntaxError: expected expression, got '<'. This is my server setup:

app.use(express.static(__dirname + '/views/webpacked'));
app.listen(5000);

app.get('*', (req, res) => {

    res.sendFile(path.resolve(__dirname, 'views', 'webpacked', 'index.html'));

 });

I have also tried:

app.use('/*/*', express.static(...));

But it did not work, either.

Thank you for advice in advance.

user3104270
  • 625
  • 2
  • 10
  • 17

2 Answers2

11

I've got a react/react-router page without any express and got the same error: SyntaxError: expected expression, got '<' which started to appear as soon as I configured a react route other then just root /.

After some experimenting I've figured out that in my index.html there was a link to js file:

  <script src="bundle.js"></script>
</body>
</html>

So, the solution was to add / in the source path:

  <script src="/bundle.js"></script>
</body>
</html>

and the error has gone.

Hope that could help a bit.

Hero Qu
  • 911
  • 9
  • 10
0

After adding the / to bundle.js as this answer suggested the issue still persisted.

I was able to fix the issue by running rm -rf .cache in my project directory, as per this github issue.

drhayes
  • 581
  • 3
  • 16