【问题标题】:Basic Express/Node Function Syntax Not Working基本 Express/Node 函数语法不起作用
【发布时间】:2018-08-23 18:40:05
【问题描述】:

在我的 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...')
)

效果很好。但是当我在我的网络主机 (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": "..."
  }
}

【问题讨论】:

  • 你的node -v是什么?
  • 请发布您的 package.json
  • 我的节点版本是10.9.0
  • 确保你的主机的node版本至少为8
  • package.json 在我的问题上方发布。谢谢!

标签: node.js express passenger dreamhost


【解决方案1】:

我通过.htaccess 文件通知Passenger节点版本解决了这个问题。

确保您按照指南使用 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),Passenger应该使用指定版本的节点。

【讨论】:

  • 谢谢!抱歉,我未能发布解决方案。我完全按照您对.htaccess 文件的建议进行了操作。我很高兴它现在被记录在这里供其他人使用。 :)
  • 是的,想了很多,只是想为像我这样的人发布解决方案:) 干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多