做的一个heroku的文件。
大概的有这么几个文件
登录页面
登陆用的账户密码存储在json文件夹里,里面的账号才能使用
<!DOCTYPE html>
<html lang="en">
{{>head}}
<body>
<h1 class="login-title">login page</h1>
<div>
<form action="/login" method="post" class="login-form">
<div class="con">
<header class="head-form">
<h2>登陆</h2>
<p>登 陆 </p>
</header>
<br />
<div class="field-set">
<input class="form-input" id="email" type="email" name="email" placeholder="Username" autofocus />
<br />
<input class="form-input" type="password" placeholder="Password" id="password" name="password" />
<br />
<button class="btn log-in">登陆</button>
</div>
<div class="other">
{{#if message}}
<label class="message">{{message}}</label>
{{/if}}
</div>
</div>
</form>
</div>
</body>
</html>
显示页面,显示一些图片
<!DOCTYPE html>
<html lang="en">
{{>head}}
<body>
<h1>mormal gallery</h1>
<form action="/图片" method="post">
<div class="main-container">
<select name="myList" class="container">
<option></option>
{{#each data}}
<option value="{{this.description}}">{{this.description}}</option>
{{/each}}
</select>
<div class="presentation">
{{#if main}}
<a href="/gallery/{{main}}"><img src="/images/{{main}}.jpg" alt="Image not found"></a>
{{else}}
<img src="/images/1.jpg" alt="Image not found">
{{/if}}
</div>
<br><br>
<button type="submit" value="submit" name="submit" class="submit">Submit</button>
<div class="label">{{label}}</div>
<div class="logoutWrapper">
<label for="loggedUser" id="loggedUser" name="loggedUser">Welcome, {{username}} !</label>
<button type="submit" id="logout" name="logout" value="logout">Logout</button>
</div>
</div>
</form>
</body>
</html>
app文件
const HTTP_PORT = process.env.PORT || 3000;
const express = require('express');
const exphbs = require('express-handlebars');
const path = require('path');
const bodyParser = require('body-parser');
const fs = require('fs');
const randomString = require('randomstring');
const session = require('client-sessions');
const app = express();
app.engine(
'hbs',
exphbs({
extname: '.hbs',
runtimeOptions: {
allowProtoPropertiesByDefault: true,
allowProtoMethodsByDefault: true
},
defaultLayout: false,
layoutsDir: path.join(__dirname, '/views')
})
);
app.get('/', (req, res) => {
res.redirect('/login');
});
app.get('/login', (req, res) => {
req.mySession.reset();
Photo.updateMany({ status: 'S' }, { status: 'A' })
.then((result) => {
res.render('login', {
message: false,
title: 'Please Log in'
});
console.log('All photos are available');
})
.catch((err) => {
console.log(err);
});
});
app.get('/gallery', (req, res) => {
if (req.mySession.user) {
Photo.find({ status: 'A' })
.sort({ description: 1 })
.then((result) => {
res.render('index', {
title: 'Gallery',
data: result,
label: '',
main: false,
username: req.mySession.user
});
})
.catch((err) => {
console.log(err);
});
} else {
req.mySession.reset();
res.redirect('/login');
}
});
app.get('/gallery/:id', (req, res) => {
const id = req.params.id;
Photo.find({ description: id })
.then((result) => {
res.render('purchase', {
data: result,
title: 'Purchase'
});
})
.catch((err) => {
console.log(err);
});
});
app.put('/gallery/:id', (req, res) => {
const id = req.params.id;
Photo.updateMany({ description: id }, { status: 'S' })
.then((result) => {
res.json({ redirect: '/gallery' });
})
.catch((err) => {
console.log(err);
});
});
app.post('/login', (req, res) => {
let userEmail = req.body.email;
let pass = req.body.password;
fs.readFile('user.json', 'utf-8', (err, data) => {
if (err) throw err;
let confirmObject = JSON.parse(data);
if (!confirmObject.hasOwnProperty(userEmail)) {
res.render('login', {
message: 'Not a registered username.'
});
} else if (confirmObject[userEmail] != pass) {
res.render('login', {
message: 'Invalid password.'
});
} else {
delete req.body.password;
req.mySession.user = userEmail;
return res.redirect('/gallery');
}
});
});
剩下的打包之类文件不好放,总之我的跑不起来。
有没有人能告诉我为什么跑不起来,给一个成功的样本文件和截图么?
跑不起来报错是什么,日志截个图
报什么错,我看看,
在自己主机上跑,错误代码就是“Uncaught SyntaxError: Unexpected identifier”
我在heroku上爬出来是这样的
2021-07-09T06:45:55.598991+00:00 app[api]: Initial release by user user????
2021-07-09T06:45:55.598991+00:00 app[api]: Release v1 created by user user????
2021-07-09T06:45:55.788809+00:00 app[api]: Release v2 created by user user????
2021-07-09T06:45:55.788809+00:00 app[api]: Enable Logplex by user user????
2021-07-09T06:46:25.000000+00:00 app[api]: Build started by user user????
2021-07-09T06:46:43.763109+00:00 app[api]: Deploy d00906bb by user user????
2021-07-09T06:46:43.763109+00:00 app[api]: Release v3 created by user user????
2021-07-09T06:46:43.777061+00:00 app[api]: Scaled to web@1:Free by user user????
2021-07-09T06:46:44.000000+00:00 app[api]: Build succeeded
2021-07-09T06:46:48.182634+00:00 heroku[web.1]: Starting process with command node app.js
2021-07-09T06:46:51.996259+00:00 app[web.1]: Successfully connected to DB
2021-07-09T06:46:51.996652+00:00 app[web.1]: Listening on port 26334
2021-07-09T06:46:52.732037+00:00 heroku[web.1]: State changed from starting to up
2021-07-09T06:46:54.072700+00:00 heroku[router]: at=info method=GET path="/" host=tt1tt2.herokuapp.com request_id=c03cf16a-0cd9-48d5-8130-cdfb4333c48f fwd="216.209.30.248" dyno=web.1 connect=0ms service=23ms status=302 bytes=350 protocol=https
2021-07-09T06:46:54.112394+00:00 app[web.1]: ReferenceError: Photo is not defined
2021-07-09T06:46:54.112447+00:00 app[web.1]: at /app/app.js:50:2
2021-07-09T06:46:54.112448+00:00 app[web.1]: at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
2021-07-09T06:46:54.112449+00:00 app[web.1]: at next (/app/node_modules/express/lib/router/route.js:137:13)
2021-07-09T06:46:54.112450+00:00 app[web.1]: at Route.dispatch (/app/node_modules/express/lib/router/route.js:112:3)
2021-07-09T06:46:54.112450+00:00 app[web.1]: at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
2021-07-09T06:46:54.112451+00:00 app[web.1]: at /app/node_modules/express/lib/router/index.js:281:22
2021-07-09T06:46:54.112452+00:00 app[web.1]: at Function.process_params (/app/node_modules/express/lib/router/index.js:335:12)
2021-07-09T06:46:54.112452+00:00 app[web.1]: at next (/app/node_modules/express/lib/router/index.js:275:10)
2021-07-09T06:46:54.112453+00:00 app[web.1]: at /app/app.js:41:2
2021-07-09T06:46:54.112453+00:00 app[web.1]: at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
2021-07-09T06:46:54.116704+00:00 heroku[router]: at=info method=GET path="/login" host=tt1tt2.herokuapp.com request_id=029735f1-c418-4460-bbc6-0603a23da56e fwd="216.209.30.248" dyno=web.1 connect=0ms service=14ms status=500 bytes=696 protocol=https