node.js - 基本 Express/Node 函数语法不起作用

标签 node.js express passenger dreamhost

在我的 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": "..."
  }
}

最佳答案

我通过 .htaccess 文件告知 Passenger Node 版本来解决此问题。

确保您按照指南使用 nvm 安装您的 Node 版本。

nvm install v10.18.1
nvm alias default v10.18.1

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

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

确保将用户名替换为您的用户名和您需要的 Node 版本

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

关于node.js - 基本 Express/Node 函数语法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51992306/

相关文章:

node.js - 如何使用请求使用转换流?

javascript - Browserify 不会将 module.exports 转换为窗口属性?

javascript - Node.js 和 csv-express 日期格式

javascript - 我无法将数据插入我的数据库(mysql)

ruby-on-rails - Ruby on Rails 服务器错误

node.js - Spring Cloud : ZUUL + Eureka + NodeJS

javascript - 如何在自调用的异步函数中插入参数?

ruby-on-rails - Rails 生产路线问题

ruby-on-rails - 尝试使用 https 时乘客崩溃

javascript - 在 npm 包中使用对等依赖