在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
文件通知乘客节点版本来解决此问题。
确保遵循该指南以使用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
),乘客应使用指定版本的节点。
谢谢!抱歉,我未能发布解决方案。我正是按照
.htaccess
文件的建议做了的。我很高兴现在在这里为其他人记录了它。:)是的,我想了很多,只是想将解决方案发布给像我这样的人:)干杯