【问题标题】:How to host expressjs application on cpanel shared hosting?如何在 cpanel 共享主机上托管 expressjs 应用程序?
【发布时间】:2020-10-22 20:45:24
【问题描述】:

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

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 框架的应用程序时,我会遇到错误。有什么建议吗?

【问题讨论】:

    标签: node.js express cpanel


    【解决方案1】:

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

    这个解决方案对我有用。 (复制 VictoryFlame 网站的解决方案)

    让我们在 CPanel 上设置 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

    你好节点快递

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

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 2016-12-13
      • 2023-03-25
      • 2016-09-26
      • 2016-11-21
      • 2014-09-06
      • 2011-04-23
      • 2019-07-31
      • 1970-01-01
      相关资源
      最近更新 更多