我正在尝试在共享托管cpanel中部署我的简单express应用程序,但是当我尝试访问我的应用程序时,它显示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框架的应用程序时,就会遇到错误。有什么建议吗?
答案 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