温馨提示:本文翻译自stackoverflow.com,查看原文请点击:node.js - Basic Express/Node Function Syntax Not Working
express node.js passenger dreamhost

node.js - 基本Express / Node功能语法不起作用

发布于 2020-03-27 16:17:47

在Mac上,我可以创建一个简单的“ Hello World” Node / Express应用,如下所示:

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

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

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

效果很好。但是,当我在Web主机(DreamHost)上安装Node应用程序时,请确保使用相同版本的Node和NPM,然后执行npm install并重新启动服务器。

乘客抱怨语法:

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

为什么会拒绝该语法?我的猜测是某种语法依赖关系,但是对Node来说我太陌生了,不知道它们之间的区别。:)

如果我将其更改为此:

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

function(){ 代替 () =>

为什么会这样呢?

-更新-

这是我的package.json文件:

{
  "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": "..."
  }
}

查看更多

查看更多

提问者
Clifton Labrum
被浏览
67
Michael 2020-01-31 17:16

我通过通过.htaccess文件通知乘客节点版本来解决此问题

确保遵循该指南以使用nvm安装节点的版本。

nvm install v10.18.1
nvm alias default v10.18.1

在您的项目目录中,创建一个名为的文件.htaccess并添加以下行:

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

确保用用户名和所需的节点版本替换用户名

然后重新启动服务器(touch tmp/restart.txt),乘客应使用指定版本的节点。