Tôi bắt đầu gặp lỗi này khi tôi cài đặt mysql_server trên máy chủ của mình với quyền root, tôi đang sử dụng ufw, tôi không biết liệu tôi có nên cho phép máy chủ mysql thông qua ufw của mình hay không, tôi cũng không biết làm thế nào. trên máy chủ cục bộ của tôi, tôi gặp lỗi này:
nội bộ/mô-đun/cjs/loader.js:638
ném err;
^
Lỗi: Không thể tìm thấy mô-đun 'mysql'
tại Function.Module._resolveFilename (nội bộ/mô-đun/cjs/loader.js:636:15)
tại Function.Module._load (nội bộ/mô-đun/cjs/loader.js:562:25)
tại Module.require (nội bộ/mô-đun/cjs/loader.js:692:17)
theo yêu cầu (nội bộ/mô-đun/cjs/helpers.js:25:18)
tại Object.<anonymous> (/mnt/c/Users/user/Documents/webdevelopment/projects/FinalYearProject/Black-Anthem-Ltd-Website/app.js:4:13)
tại Module._compile (nội bộ/mô-đun/cjs/loader.js:778:30)
tại Object.Module._extensions..js (nội bộ/mô-đun/cjs/loader.js:789:10)
tại Module.load (nội bộ/mô-đun/cjs/loader.js:653:32)
tại tryModuleLoad (nội bộ/mô-đun/cjs/loader.js:593:12)
tại Function.Module._load (nội bộ/mô-đun/cjs/loader.js:585:3)
đặc biệt nó nói rằng nó không thể tìm thấy mysql trong các thư mục của tôi. Tôi đã cố gắng kết nối biểu mẫu html của mình với cơ sở dữ liệu mysql trước khi cài đặt mysql_server và bắt đầu gặp sự cố này. Đây là mã mẫu html của tôi:
Mẫu người đăng ký trang chủ:
<div class="subsect">
<div id="subtxt">
<h1>Subscribe to our Newsletter!</h1>
</div>
<div id="subform">
<form action="/" method="post">
<div class="ol"><div class="nam" >Name</div><div id="rsik">*</div></div>
<div class="sd ssd"><input type="text" name="fname" placeholder="First" id="fn">
<input type="text" name="lname" placeholder="Last" id="ln" ></div>
<div class="ol"><div class="nam" >E-mail</div><div id="rsik">*</div></div>
<div class="sd"></span><input type="email" name="email" placeholder="[email protected]" id="email"></div></br>
<button type="submit">Subscribe</button>
</form>
</div>
</div>
Yêu cầu mẫu trang báo giá:
<div id="formsection">
<form action="/RAQ" method="post" id="raqform">
<h2>Request A Quote</h2>
<div class="ol"><div class="nam" >Name</div><div id="rsik">*</div></div>
<div class="sd ssd"><input type="text" name="sfname" placeholder="First" id="fn">
<input type="text" name="slname" placeholder="Last" id="ln" ></div>
<div class="ol"><div class="nam" >E-mail</div><div id="rsik">*</div></div>
<div class="sd"><input type="email" name="semail" placeholder="[email protected]" id="email"></div>
<div class="ol"><div class="nam" >Select A Service</div><div id="rsik">*</div></div>
<div class="sd">
<select name="services" id="ser" class="sd">
<option value="RDCCC">Roads, Drainage, Culverts and channels construction</option>
<option value="CON">Consultancy</option>
<option value="DIC">Dams and irrigation Construction</option>
<option value="WMPFC">Warehousing, Marine and port facilities construction</option>
<option value="CHEIUPW">Construction of concrete hard surfaces especially in unfriendly polluted water</option>
<option value="CBHF">Consultation on buildings and feasibility</option>
<option value="CIMS">Calibration, inspection and meter proving services</option>
<option value="DCOGPPF">Design and Construction of oil and gas production and processing facilities</option>
<option value="DCPS">Design and Construction of pipeline Systems</option>
<option value="DCRPP">Design and Construction of refineries and petrochemical plants</option>
<option value="ROGF">Rehabilitation of oil and gas facilities (Onshore and Offshore)</option>
<option value="DCMTF">Design, Construction and Maintenance of tank farms</option>
<option value="DCMUS">Design, Construction and Maintenance of flow stations and underground storage</option>
<option value="LIP">Local and international procurement</option>
<option value="SSFP">Support services for projects</option>
<option value="CMSL">Civil and mechanical equipment supply and leasing</option>
<option value="HSEFPSMS">Health and safety environment and fire protection systems materials supply</option>
<option value="EFPSMS">Environment and fire protection systems materials supply</option>
<option value="SSS">Structural steel supply</option>
<option value="POCTG">Pipeline and oil country tubular goods (OCTG) supply </option>
<option value="WHCPS">Wellheads and control supply</option>
<option value="VFS">Valves and fittings supply</option>
<option value="PCFSS">Pumps, Compressor and fluid systems supply</option>
<option value="SSMPS">Strategic sourcing and man power supplies</option>
<option value="LSM">Logistics and supply chain management</option>
<option value="PM">Project Management</option>
<option value="FM">Facilities Management</option>
</select>
<div class="ol"><div class="nam" >Message</div><div id="rsik">*</div></div>
<div class="sd"><textarea name="comment" id="" cols="30" rows="10">Type your message here</textarea></div>
</div>
<button type="submit">Request A Quote</button>
</form>
</div>
Đây là tệp app.js của tôi:
const express = yêu cầu ('bày tỏ')
đường dẫn const = yêu cầu ('đường dẫn')
ứng dụng const = express()
var mysql = yêu cầu('mysql');
var bodyParser = require('body-parser')
cổng const = 3000
var urlencodedParser = bodyParser.urlencoded({ Extended: false })
//Tệp tĩnh
app.use(express.static(path.resolve(__dirname, 'public')))
// Đặt chế độ xem
app.set('công cụ xem', 'ejs')
app.set('lượt xem', './lượt xem')
app.get('/', (req, res) => {
res.render('Trang chủ')
})
app.get('/Giới thiệu', (req, res) => {
res.render('Giới thiệu')
})
app.get('/Projects', (req, res) => {
res.render('Dự án')
})
app.get('/RAQ', (req, res) => {
res.render('RAQ')
})
app.get('/', (req, res) => {
res.render('home', {qs: req.query});
})
app.post('/', urlencodedParser, (req, res) => {
res.render('home', {qs: req.query});
})
app.get('/raq', (req, res) => {
res.render('raq', {qs: req.query});
})
app.post('/raq', urlencodedParser, (req, res) => {
res.render('raq', {qs: req.query});
})
var kết nối = mysql.createConnection({
máy chủ lưu trữ: 'https://www.blackanthemltd.site',
người dùng: 'abayomi',
mật khẩu mở khóa : '',
cơ sở dữ liệu: 'thuê bao'
});
connection.connect(function(err){
nếu (err) ném err;
console.log('đã kết nối..')
});
app.post('/', function(req,res){
console.log(req.body);
var sql ="chèn vào giá trị người dùng('"+req.body.fname+"','"+req.body.lname+"',"+req.body.email+")"
connection.query(sql, function (lỗi, kết quả) {
nếu (lỗi) ném lỗi;
console.log('Giải pháp là: ', results[0].solution);
});
res.render('Trang chủ', { title: 'Đã lưu dữ liệu',
thông báo: 'Đã lưu dữ liệu thành công.'})
kết nối.end();
})
var connection2 = mysql.createConnection({
máy chủ lưu trữ: 'https://www.blackanthemltd.site',
người dùng: 'abayomi',
mật khẩu mở khóa : '',
cơ sở dữ liệu: 'Quotation_requests'
});
connection2.connect(function(err){
nếu (err) ném err;
console.log('đã kết nối..')
});
app.post('/RAQ', function(req,res){
console.log(req.body);
var sql ="chèn vào giá trị người dùng('"+req.body.sfname+"', '"+req.body.slname+"', '"+req.body.semail+"', '"+req.body.services+ "', "+req.body.comment+")"
connection2.query(sql, function (lỗi, kết quả) {
nếu (lỗi) ném lỗi;
console.log('Giải pháp là: ', results[0].solution);
});
res.render('RAQ', { title: 'Dữ liệu đã lưu',
thông báo: 'Đã lưu dữ liệu thành công.'})
kết nối2.end();
})
app.listen(cổng, () => {
console.log(`Ứng dụng ví dụ đang nghe tại http://localhost:${port}`)
})
Đây là tệp pack.json của tôi trên máy chủ từ xa của tôi:
{
"tên": "balfyp",
"phiên bản": "1.0.0",
"description": "Dự án năm cuối",
"chính": "app.js",
"kịch bản": {
"kiểm tra": "echo \"Lỗi: không chỉ định kiểm tra\" && thoát 1",
"bắt đầu": "gật đầu app.js"
},
"tác giả": "abayomi",
"giấy phép": "MIT",
"phụ thuộc": {
"cors": "^2.8.5",
"ejs": "^3.1.6",
"thể hiện": "^4.17.1"
},
"devDependencies": {
"gật đầu": "^2.0.12"
}
}
đây là tệp pack.json của tôi trên máy chủ trực tiếp của tôi:
{
"tên": "balfyp",
"phiên bản": "1.0.0",
"description": "Dự án năm cuối",
"chính": "app.js",
"kịch bản": {
"kiểm tra": "echo \"Lỗi: không chỉ định kiểm tra\" && thoát 1",
"bắt đầu": "gật đầu app.js"
},
"tác giả": "abayomi",
"giấy phép": "MIT",
"phụ thuộc": {
"body-parser": "^1.19.0",
"cors": "^2.8.5",
"ejs": "^3.1.6",
"thể hiện": "^4.17.1",
"mysql": "^2.18.1",
"gật đầu": "^6.6.3",
"nodemailer-mailgun-transport": "^2.1.3"
},
"devDependencies": {
"gật đầu": "^2.0.12"
}
}
Xin vui lòng những gì tôi đã làm sai?
Tôi đã thực hiện một số thay đổi đối với cơ sở mã của mình, trang web của tôi đã ngừng hiển thị lỗi và tải tốt, điều đó có nghĩa là mysql đã kết nối thành công, nhưng khi nhấp vào nút gửi trên biểu mẫu của tôi sau khi điền vào, tôi đã gặp lỗi:
Không ĐĂNG /
đây là những thay đổi tôi đã thực hiện đối với cơ sở mã, đặc biệt chỉ đối với tệp app.js của tôi:
const express = yêu cầu ('bày tỏ')
đường dẫn const = yêu cầu ('đường dẫn')
ứng dụng const = express()
var mysql = yêu cầu('mysql');
var bodyParser = require('body-parser')
cổng const = 3000
var urlencodedParser = bodyParser.urlencoded({ Extended: false })
//Tệp tĩnh
app.use(express.static(path.resolve(__dirname, 'public')))
// Đặt chế độ xem
app.set('công cụ xem', 'ejs')
app.set('lượt xem', './lượt xem')
app.get('/', (req, res) => {
res.render('Trang chủ')
})
app.get('/Giới thiệu', (req, res) => {
res.render('Giới thiệu')
})
app.get('/Projects', (req, res) => {
res.render('Dự án')
})
app.get('/RAQ', (req, res) => {
res.render('RAQ')
})
app.get('/', (req, res) => {
res.render('home', {qs: req.query});
})
app.post('/', urlencodedParser, (req, res) => {
res.render('home', {qs: req.query});
})
var kết nối = mysql.createConnection({
máy chủ lưu trữ: 'https://www.blackanthemltd.site',
người dùng: 'gốc',
mật khẩu : 'Mynameisabayomi1.',
cơ sở dữ liệu: 'bal'
});
connection.connect(function(err){
nếu (err) ném err;
console.log('đã kết nối..')
});
app.post('/', function(req,res){
console.log(req.body);
var sql ="chèn vào giá trị người dùng('"+req.body.fn+"','"+req.body.ln+"',"+req.body.email+")"
connection.query(sql, function (lỗi, kết quả) {
nếu (lỗi) ném lỗi;
console.log('Giải pháp là: ', results[0].solution);
});
res.render('Trang chủ', { title: 'Đã lưu dữ liệu',
thông báo: 'Đã lưu dữ liệu thành công.'})
kết nối.end();
})
app.listen(cổng, () => {
console.log(`Ứng dụng ví dụ đang nghe tại http://localhost:${port}`)
})
xin vui lòng làm thế nào tôi có thể ngừng nhận được lỗi này.