使用 cPanel 的生产 Angular/nodejs 应用程序。 Node.js 应用程序错误?
Production Angular/nodejs app with cPanel. Node.js app error?
我已经通过 cPanel 部署了一个 angular 应用程序(使用命令 'ng build --prod="true"' 编译)并且它当前处于运行状态:https://nathankeogh.com
它还使用 node.js 后端,即 cPanel 上的 运行。应用程序启动文件是“server.js”。
我已经从 MySQL 数据库中导入数据以及 cPanel 上的数据等。 (使用命令“sed -e 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' -i myfilename.sql”来解决未知的归类错误。)
我的 prod.envrionment.ts 文件当前将 ApiURL 指向“httpS://nathankeogh.com”。
我已经更新了 cPanel 上的 node.js 应用程序,使用 cPanel 上数据库的名称和凭据。
访问该网站时,它会按预期加载登录页面,但如您所见,在 chrome 的控制台和数据中出现内部服务器错误(未知)不会 post/get:
开发版运行正常。
进一步开发: 当鼠标悬停在 chrome 控制台中的“错误”文本上时,它会显示完整的错误输出:
“Web 应用程序无法启动”。我相信它是一个 cPanel 节点应用程序错误:
在此之后,cPanel 错误表明 server.js 文件第 7 行存在问题?还是 22? ("app.use('/accounts', require('./accounts/accounts.controller'));") 任何人都可以确定 server.js 文件有什么问题导致问题?
非常感谢您在确定问题或建议方面的任何帮助。谢谢。
node.js cPanel 配置:
Server.js:
require('rootpath')();
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const cors = require('cors');
const errorHandler = require('_middleware/error-handler');
const multer = require('multer')
//const upload = multer({ dest: 'images/' })
var fileExtension = require('file-extension')
//app.use(express.static(__dirname+'/uploaded-files'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(cookieParser());
// allow cors requests from any origin and with credentials
app.use(cors({ origin: (origin, callback) => callback(null, true), credentials: true }));
// api routes
app.use('/accounts', require('./accounts/accounts.controller'));
app.use('/lab-swaps', require('./lab-swaps/lab-swaps.controller'));
// swagger docs route
app.use('/api-docs', require('_helpers/swagger'));
// global error handler
app.use(errorHandler);
// start server
const port = process.env.NODE_ENV === 'production' ? (process.env.PORT || 80) : 4000;
app.listen(port, () => console.log('Server listening on port ' + port));
// Basic Get Route
app.get('/', function (req, res) {
res.json({ message: 'Server Started!' });
});
var storage = multer.diskStorage({
// Setting directory on disk to save uploaded files
destination: function (req, file, cb) {
cb(null, 'uploaded-files')
},
// Setting name of file saved
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + '.' + fileExtension(file.originalname))
}
})
var upload = multer({
storage: storage,
limits: {
// Setting Image Size Limit to 2MBs
fileSize: 2000000
},
fileFilter(req, file, cb) {
if (!file.originalname.match(/\.(jpg|jpeg|png)$/)) {
//Error
cb(new Error('Please upload JPG and PNG images only!'))
}
//Success
cb(undefined, true)
}
})
app.post('/uploadedImages', upload.single('uploadedImage'), (req, res, next) => {
const file = req.file
console.log(req);
if (!file) {
const error = new Error('Please upload a file')
error.httpStatusCode = 400
return next(error)
}
res.status(200).send({
statusCode: 200,
status: 'success',
uploadedFile: file
})
}, (error, req, res, next) => {
res.status(400).send({
error: error.message
})
})
rootpath
库似乎维护得不好,因此可能会导致问题。
删除它并改用相对路径。
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const cors = require('cors');
const errorHandler = require('./_middleware/error-handler');
const multer = require('multer');
相对路径更常规,因此您将避免混淆未来使用您的代码的开发人员,并且您将避免 potential issues 使用您的编辑器。
我已经通过 cPanel 部署了一个 angular 应用程序(使用命令 'ng build --prod="true"' 编译)并且它当前处于运行状态:https://nathankeogh.com
它还使用 node.js 后端,即 cPanel 上的 运行。应用程序启动文件是“server.js”。
我已经从 MySQL 数据库中导入数据以及 cPanel 上的数据等。 (使用命令“sed -e 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' -i myfilename.sql”来解决未知的归类错误。)
我的 prod.envrionment.ts 文件当前将 ApiURL 指向“httpS://nathankeogh.com”。
我已经更新了 cPanel 上的 node.js 应用程序,使用 cPanel 上数据库的名称和凭据。
访问该网站时,它会按预期加载登录页面,但如您所见,在 chrome 的控制台和数据中出现内部服务器错误(未知)不会 post/get:
开发版运行正常。
进一步开发: 当鼠标悬停在 chrome 控制台中的“错误”文本上时,它会显示完整的错误输出:
“Web 应用程序无法启动”。我相信它是一个 cPanel 节点应用程序错误:
在此之后,cPanel 错误表明 server.js 文件第 7 行存在问题?还是 22? ("app.use('/accounts', require('./accounts/accounts.controller'));") 任何人都可以确定 server.js 文件有什么问题导致问题?
非常感谢您在确定问题或建议方面的任何帮助。谢谢。
node.js cPanel 配置:
Server.js:
require('rootpath')();
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const cors = require('cors');
const errorHandler = require('_middleware/error-handler');
const multer = require('multer')
//const upload = multer({ dest: 'images/' })
var fileExtension = require('file-extension')
//app.use(express.static(__dirname+'/uploaded-files'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(cookieParser());
// allow cors requests from any origin and with credentials
app.use(cors({ origin: (origin, callback) => callback(null, true), credentials: true }));
// api routes
app.use('/accounts', require('./accounts/accounts.controller'));
app.use('/lab-swaps', require('./lab-swaps/lab-swaps.controller'));
// swagger docs route
app.use('/api-docs', require('_helpers/swagger'));
// global error handler
app.use(errorHandler);
// start server
const port = process.env.NODE_ENV === 'production' ? (process.env.PORT || 80) : 4000;
app.listen(port, () => console.log('Server listening on port ' + port));
// Basic Get Route
app.get('/', function (req, res) {
res.json({ message: 'Server Started!' });
});
var storage = multer.diskStorage({
// Setting directory on disk to save uploaded files
destination: function (req, file, cb) {
cb(null, 'uploaded-files')
},
// Setting name of file saved
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + '.' + fileExtension(file.originalname))
}
})
var upload = multer({
storage: storage,
limits: {
// Setting Image Size Limit to 2MBs
fileSize: 2000000
},
fileFilter(req, file, cb) {
if (!file.originalname.match(/\.(jpg|jpeg|png)$/)) {
//Error
cb(new Error('Please upload JPG and PNG images only!'))
}
//Success
cb(undefined, true)
}
})
app.post('/uploadedImages', upload.single('uploadedImage'), (req, res, next) => {
const file = req.file
console.log(req);
if (!file) {
const error = new Error('Please upload a file')
error.httpStatusCode = 400
return next(error)
}
res.status(200).send({
statusCode: 200,
status: 'success',
uploadedFile: file
})
}, (error, req, res, next) => {
res.status(400).send({
error: error.message
})
})
rootpath
库似乎维护得不好,因此可能会导致问题。
删除它并改用相对路径。
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const cors = require('cors');
const errorHandler = require('./_middleware/error-handler');
const multer = require('multer');
相对路径更常规,因此您将避免混淆未来使用您的代码的开发人员,并且您将避免 potential issues 使用您的编辑器。