如何在cpanel共享托管上托管expressjs应用程序?

时间:2020-07-02 09:27:56

标签: node.js express cpanel

我正在尝试在共享托管cpanel中部署我的简单express应用程序,但是当我尝试访问我的应用程序时,它显示Cannot GET /apps/api/ 请查看屏幕截图以查看下面的我的设置:- enter image description here

index.js

const express = require('express')
const app = express()
var port=process.env.PORT?process.env.PORT:80;

app.get('/api', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))

package.json

{
  "name": "myexpress",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  }
}

创建应用程序后,我运行 RUN NPM INSTALL ,然后重新启动应用程序 请注意,普通的nodejs应用程序可以正常工作,我可以访问它,但是当我尝试托管使用expressjs框架的应用程序时,就会遇到错误。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

https://victoryflame.com/article/create-an-express-application-with-a2-hosting

此解决方案对我有用。 (从VictoryFlame网站复制解决方案)

让我们进入CPanel上的Setup Node.js应用程序,然后我们要选择要托管Node.js应用程序的应用程序。

接下来,您要使用以下信息创建package.json

{
  "name": "app",
  "version": "1.0.0",
  "description": "My App",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "./node_modules/parcel-bundler/bin/cli.js public/index.js --out-dir public/dist"
  },
  "dependencies": {
    "express": "^4.17.1",
    "ejs": "~2.6.1",
  },
  "author": "",
  "license": "ISC"
}

在您的nodejs托管项目中,停止运行该应用程序 然后,单击“运行NPM安装”按钮。 (您可能必须刷新页面才能使该按钮生效)

让我们回到文件管理器,再回到我们正在研究的项目的根目录。在那里,我们要使用名为index.ejs

的文件创建一个新的文件夹视图。

在index.ejs里面,我们要添加以下内容

<h1>Hello Node Express</h1>

然后,我们要进入根目录中的app.js文件,并用以下内容替换其中的所有内容

var express = require('express');
var app = express();
var path = require('path');

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');


app.use('/a2nodejs/static', express.static('public'));

app.get('/a2nodejs', (req, res) => {
  res.render('index', { title: 'Express' });
});

app.listen();

现在回到“设置Node.js”部分并重新启动我们的托管应用程序

转到我们项目的url,您应该会看到我们的index.ejs所提供的html

但是如果我们希望我们的ejs文件具有来自服务器的数据怎么办。

为此,请进入index.ejs文件,然后从以下内容替换Express

Hello Node Express

现在转到我们的应用程序URL,您应该看到我们的更新页面