Warm tip: This article is reproduced from stackoverflow.com, please click
express node.js passenger dreamhost

Basic Express/Node Function Syntax Not Working

发布于 2020-03-27 15:46:56

On my Mac, I can create a simple "Hello World" Node/Express app like this:

const express = require('express')
const app = express()

app.get('/', function(req, res){
  res.send('Yo')
})

app.listen(3000, () => 
  console.log('Listening on port 3000...')
)

It works great. But when I install my Node app on my web host (DreamHost), I make sure I'm on the same version of Node and NPM, and I do npm install and then restart the server.

Passenger complains about the syntax:

/home/labrumco/progressbox.net/app.js:9
app.listen(3000, () => 
                  ^
SyntaxError: Unexpected token )

Why would it reject that syntax? My guess is some kind of syntax dependency, but I'm too new to Node to know the difference. :)

If I change it to this it works:

app.listen(3000, function() {
  console.log('Listening on port 3000...')
})

function(){ works instead of () =>

Why is this happening?

--- Update ---

Here is my package.json file:

{
  "name": "...",
  "version": "1.0.0",
  "description": "...",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Clifton Labrum",
  "license": "ISC",
  "dependencies": {
    "express": "^4.16.3",
    "node-fetch": "^2.2.0",
    "nodemon": "^1.18.3",
    "request": "^2.88.0"
  },
  "repository": {
    "type": "git",
    "url": "..."
  }
}
Questioner
Clifton Labrum
Viewed
60
Michael 2020-01-31 17:16

I resolved this by informing Passenger of the node version through the .htaccess file.

Make sure you follow the guide to use nvm to install your version of node.

nvm install v10.18.1
nvm alias default v10.18.1

In your project directory, create a file named .htaccess and add the following line:

PassengerNodejs /home/username/.nvm/versions/node/v10.18.1/bin/node

Make sure you replace username with your username and the node version you need

Then restart the server (touch tmp/restart.txt) and Passenger should use the specified version of node.