TILホームの作成4
3278 ワード
TILホームの作成4 npm i cookie-parser cors express-session helmet hpp morgan passport passport-local path pm2
npm i @types/cookie-parser @types/cors @types/express-session @types/helmet @types/hpp @types/morgan @types/passport
を選択します.
backディレクトリに配置します.config.jsonファイルを作成し、次のように入力します.{
"apps": [
{
"name": "server",
"script": "./dist/index.js",
"instances": 2,
"exec_mode": "cluster",
"wait_ready": true,
"env": {
"NODE_ENV": "production"
}
}
]
}
パッケージもあります.修正jsonは次のようになります....
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"prestart": "tsc",
"dev": "nodemon --exec ts-node src/index.ts",
"start": "pm2 start deploy.config.json"
},
...
次のインデックス.tsファイルを開き、次のように変更します.import express from 'express';
import { createConnection } from 'typeorm';
import cors from "cors";
import session from 'express-session';
import cookieParser from'cookie-parser';
import passport from 'passport';
import morgan from 'morgan';
import path from 'path';
import hpp from 'hpp';
import helmet from 'helmet';
import dotenv from 'dotenv';
import "reflect-metadata";
dotenv.config();
const app = express();
createConnection()
.then(() => {
console.log('db 연결 성공!!');
})
.catch((error) => console.log(error));
if (process.env.NODE_ENV === 'production') {
app.set('trust proxy', 1);
app.use(morgan('combined'));
app.use(hpp());
app.use(helmet());
app.use(cors({
origin: true,
// origin: '', // 배포 후 도메인이 들어가면 된다.
credentials: true,
}));
} else {
app.use(morgan('dev'));
app.use(cors({
origin: true,
credentials: true,
}));
}
app.use('/', express.static(path.join(__dirname, 'uploads')));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser(process.env.COOKIE_SECRET));
if (process.env.NODE_ENV === 'production') {
app.use(session({
saveUninitialized: false,
resave: false,
secret: process.env.COOKIE_SECRET,
proxy: true,
cookie: {
httpOnly: true,
secure: true,
domain: process.env.NODE_ENV === 'production' && '.codingpalette.com',
maxAge: 60 * 60 * 1000
},
}));
} else {
app.use(session({
saveUninitialized: false,
resave: false,
secret: process.env.COOKIE_SECRET,
}));
}
app.use(passport.initialize());
app.use(passport.session());
console.log(process.env.COOKIE_SECRET)
app.get('/', (req: express.Request, res: express.Response) => {
res.send('Hello World!');
});
app.listen(4000, () => {
console.log('Example app listening on port 4000!');
});
そしてbackディレクトリでenvファイルを作成し、次のように入力します.COOKIE_SECRET=test
次にサーバを実行します.コンソールに正常な実行とtestテキストが表示されます.
Reference
この問題について(TILホームの作成4), 我々は、より多くの情報をここで見つけました
https://velog.io/@adffewr/TIL-홈페이지-만들기-4
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
npm i cookie-parser cors express-session helmet hpp morgan passport passport-local path pm2
npm i @types/cookie-parser @types/cors @types/express-session @types/helmet @types/hpp @types/morgan @types/passport
{
"apps": [
{
"name": "server",
"script": "./dist/index.js",
"instances": 2,
"exec_mode": "cluster",
"wait_ready": true,
"env": {
"NODE_ENV": "production"
}
}
]
}
...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"prestart": "tsc",
"dev": "nodemon --exec ts-node src/index.ts",
"start": "pm2 start deploy.config.json"
},
...
import express from 'express';
import { createConnection } from 'typeorm';
import cors from "cors";
import session from 'express-session';
import cookieParser from'cookie-parser';
import passport from 'passport';
import morgan from 'morgan';
import path from 'path';
import hpp from 'hpp';
import helmet from 'helmet';
import dotenv from 'dotenv';
import "reflect-metadata";
dotenv.config();
const app = express();
createConnection()
.then(() => {
console.log('db 연결 성공!!');
})
.catch((error) => console.log(error));
if (process.env.NODE_ENV === 'production') {
app.set('trust proxy', 1);
app.use(morgan('combined'));
app.use(hpp());
app.use(helmet());
app.use(cors({
origin: true,
// origin: '', // 배포 후 도메인이 들어가면 된다.
credentials: true,
}));
} else {
app.use(morgan('dev'));
app.use(cors({
origin: true,
credentials: true,
}));
}
app.use('/', express.static(path.join(__dirname, 'uploads')));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser(process.env.COOKIE_SECRET));
if (process.env.NODE_ENV === 'production') {
app.use(session({
saveUninitialized: false,
resave: false,
secret: process.env.COOKIE_SECRET,
proxy: true,
cookie: {
httpOnly: true,
secure: true,
domain: process.env.NODE_ENV === 'production' && '.codingpalette.com',
maxAge: 60 * 60 * 1000
},
}));
} else {
app.use(session({
saveUninitialized: false,
resave: false,
secret: process.env.COOKIE_SECRET,
}));
}
app.use(passport.initialize());
app.use(passport.session());
console.log(process.env.COOKIE_SECRET)
app.get('/', (req: express.Request, res: express.Response) => {
res.send('Hello World!');
});
app.listen(4000, () => {
console.log('Example app listening on port 4000!');
});
COOKIE_SECRET=test
Reference
この問題について(TILホームの作成4), 我々は、より多くの情報をここで見つけました https://velog.io/@adffewr/TIL-홈페이지-만들기-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol