ارائه دهنده خدمات ابری PaaS و DBaaS

nodejs

برنامه‌های NodeJS

(NodeJS Apps)

🎯 توضیحات و نکات تکمیلی

فهرست عناوین:

انتخاب نسخه‌ی NodeJS

به‌صورت پیش‌فرض، برنامه‌ی شما روی نسخه‌ی ۱۴ این پلتفرم اجرا می‌شود. در صورتی که قصد دارید نسخه دیگری را برای اجرای برنامه‌ی‌تان استفاده کنید می‌توانید داخل فایل liara.json بخش زیر را اضافه کنید: (فایل زیر برای یک برنامه تستی در نظر گرفته شده است.)

{
  "platform": "node",
  "app": "nodejs-starter",
  "port": 8000,
  "node": {
    "version": "12"
  }
}

در حال حاضر، از نسخه‌های زیر پشتیبانی می‌شود:

  • 8
  • 10
  • 12
  • 14 (پیش‌فرض)
  • 16

ES6 و build کردن برنامه

اگر برنامه‌ی‌تان را با ES6 و یا بالاتر نوشته‌اید و برنامه‌ی‌تان قبل از اجرا شدن، نیاز به build شدن دارد، باید یک اسکریپت دیگر با نامbuildتعریف کنید و دستورات لازم برای build شدن برنامه‌ی‌تان را داخل package.json تعریف کنید.
برای نمونه:

{
  "scripts": {
    "start": "node build/server.js",
    "build": "gulp build"
  }
}

تنظیمات TrustedProxies

با توجه به این نکته که تمامی درخواست‌ها توسط Reverse proxy لیارا به برنامه‌ی شما هدایت می‌شود باید در زمان استفاده از فریم‌ورک‌های مختلف برای مشاهده‌ی IP واقعی کاربران و بسیاری از قابلیت‌های دیگر تعیین کنید که برنامه‌ی شما در پشت یک Reverse proxy راه‌اندازی شده است.

فریم‌ورک Express

const app = express();
app.set("trust proxy", 1);

فریم‌ورک Koa

const app = new Koa({ proxy: true });
// or
const app = new Koa();
app.proxy = true;

رفع خطای GET query missing در GraphQL

قابلیت Playground در Apollo Server در محیط Production به‌صورت پیش‌فرض غیرفعال است. برای فعال‌سازی، لازم است تا فیلدهایintrospectionوplaygroundرا برابر با trueتنظیم و سپس دیپلوی کنید.

const { ApolloServer } = require('apollo-server');
const { typeDefs, resolvers } = require('./schema');

const server = new ApolloServer({
  typeDefs,
  resolvers,
  introspection: true,
  playground: true,
});

server.listen().then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
});

منبع: Enabling GraphQL Playground in production

استقرار فریم‌ورک AdonisJS

اگر از فریم‌ورک AdonisJS استفاده می‌کنید، نیاز به تنظیمات خاصی ندارید و مطابق با مواردی که در بالا گفته شد، می‌توانید برنامه‌ی‌تان را در لیارا مستقر کنید. تنها خطای خاصی که ممکن است با آن مواجه شوید این است که این فریم‌ورک وجود یک فایل.envرا در ریشه‌ی برنامه الزامی می‌داند. اما چون در لیارا، شما متغیرهای‌تان را از بخش «تنظیمات برنامه» وارد می‌کنید، ممکن است با خطای زیر مواجه شوید:

Error: ENOENT: no such file or directory, open '/app/.env'

برای رفع این مشکل، فقط کافیست که متغیر زیر را هم از بخش تنظیمات برنامه، وارد کنید و بعد ذخیره کنید:

ENV_SILENT=true

این مورد در مستندات AdonisJS هم با عنوان Disabling the .env file گفته شده‌است.

تنظیم منطقه‌ی زمانی (TimeZone)

به صورت پیش‌فرض، منطقه‌ی زمانی بر روی Asia/Tehran تنظیم شده است. برای تغییر مقدار پیش‌فرض، می‌توانید از پارامترtimezoneدر فایل liara.jsonاستفاده کنید. برای نمونه:

{
  "platform": "node",
  "app": "nodejs-starter",
  "port": 8000,
  "node": {
    "timezone": "America/Los_Angeles"
  }
}