Mục lục
Mục lục
Bạn là một developer backend (Node.js)? Bạn không biết làm thế nào để show dự án?
Bạn muốn tìm một nơi tạm thời để lưu trữ dự án, thử nghiệm một src code?
Bạn đang làm một dự án để đi xin việc, nhưng bạn chưa biết cách deploy? Vercel! Một giải pháp khá là… Tạm được. Nó cung cấp cho chúng ta một môi trường, có thể deploy hầu hết các app nodejs lên đó và tặng bạn một database hoàn chỉnh! Tuy nhiên cần phải lưu ý:
Nó chỉ cho bạn tạo một database duy nhất dùng cho toàn bộ các dự án của bạn.
Nó chỉ limit cho bạn 5gb db free.
Nó chậmmmm cực kỳ. Vì vậy đừng suy nghĩ tới việc dùng nó mãi mãi để duy trì một app. Hãy suy nghĩ tới việc sử dụng vps riêng thì tốt hơn.
Đầu tiên, hãy tạo một file vercel.json như sau:
{
"version": 2,
"builds": [
{
"src": "./app.js",
"use": "@vercel/node"
},
{
"src": "public/**",
"use": "@vercel/static"
}
],
"routes": [
{
"src": "/((?!.*\\.\\w+$).*)",
"dest": "/app.js"
},
{
"src": "/(.+\\.[a-z]+)$",
"dest": "/public/$1"
}
]
}
Trước tiên, hãy chuyển file config/config.json thành config.js và sửa lại đường dẫn file config trong .sequelizerc:
// .sequelizerc
const path = require('path');
module.exports = {
config: path.resolve('config', 'config.js'),
};
Sau đó file config.js sẽ như sau:
// config/config.js
require('dotenv').config();
const pg = require('pg');
module.exports = {
development: {
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DATABASE,
host: process.env.POSTGRES_HOST,
dialect: process.env.DB_DIALECT || 'postgres',
port: process.env.DB_PORT || 5432,
dialectOptions: {
ssl: {
require: true,
},
},
dialectModule: pg,
},
test: {
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DATABASE,
host: process.env.POSTGRES_HOST,
dialect: process.env.DB_DIALECT || 'postgres',
port: process.env.DB_PORT || 5432,
dialectOptions: {
ssl: {
require: true,
},
},
dialectModule: pg,
},
production: {
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DATABASE,
host: process.env.POSTGRES_HOST,
dialect: process.env.DB_DIALECT || 'postgres',
port: process.env.DB_PORT || 5432,
dialectOptions: {
ssl: {
require: true,
},
},
dialectModule: pg,
},
};
Sửa một chút phần scripts trong package.json như sau:
{
"scripts": {
"dev": "nodemon ./bin/www",
"start": "node ./bin/www",
"postinstall": "npx sequelize-cli db:migrate",
"build": "npm run postinstall && npm run vercel-build"
}
}
Vô cùng đơn giản, đơn giản hơn sequelize rất nhiều!
Chúng ta hãy sửa file package.json như sau:
{
"scripts": {
"postinstall": "npx prisma generate",
"build": "npm run postinstall && npm run vercel-build"
}
}
Rất đơn giản, postinstall trong npm là một script chạy sau khi npm install hoàn tất. Trong trường hợp này, nó đang dùng để migrate database. Vercel có một cơ chế build mặc định, mình ghi đè nó bằng cách sử dụng thêm script build.
Truy cập vào đường dẫn này: https://vercel.com/[username]/~/stores Trong đó: username là username Vercel của bạn! Sau khi đã khởi tạp database thành công,
npm i -g vercel@latest
vercel login
vercel --prod
Truy cập vào đường dẫn này: https://vercel.com/[username]/[project_name]/stores Trong đó:
username là username Vercel của bạn!
project_name là project_name Vercel của bạn! Bấm nút liên kết là được thôi.
Để ý tên ENV sinh ra khi link database với dự án, nên để trong dự án giống trên vercel để đỡ lỗi.
Mỗi tài khoản chỉ có 1 database, không tạo thêm được
Nên kết nối database vercel vào pgadmin để dùng cho tiện kiểm soát
Vercel postgres là hàng free, rất chậm!!!