Photo by Kyaw Tun on Unsplash

NodeJS series

Node.JS import’u nasıl require dönüştürüyor?

Onur Dayıbaşı
Published in
2 min readJun 5, 2018

--

NodeJS çoğu yerde modül yüklemede require kullanılırken bazı yerlerde import ile karşılaşmaktayız. Bu 2 farklı yapı aynı ortam içerisinde nasıl birlikte çalışabiliyor ?

Bundan önce yazmış olduğum JS Module(IIFE →CJS→AMD →ES6) ile modüle yükleme tarihçesinden bahsetmiştim. Bu yazımda da NodeJS dili içerisinde import mekanizmasının nasıl require ile birlikte çalışabildiğini anlatmaya çalışacağım.

Node.JS’de modüle yüklerken kullandığımız require yerine bazı yerlerde import’un kullanıldığını görebilirsiniz. Bu konuyu anlatan bir çok yazı mevcut zaten… Bu yazımda ise 2 yöntemi nasıl kullanabileceğimizi anlatacağım.

npm install <package-name> — -save

dendiğinde bu sizin node_modules altında paketi çekiyor. Bu paketin yapısında farklılıklar olsada hepsinin içerisinde kesinlikle package.json dosyası bulunuyor.

Package dosyasının içerisinde ise önemli olan main dosyasında hangi “js” dosyasının çalıştırılacağı mevcut.

Eski usul yöntemde..

  • module.export

Yeni yöntemde ise..

  • exports.default

normalda aşağıdaki 2 kodda aynı module erişimi sağlar.

const parse = require(‘emailjs-mime-parser’).default;
import parse from ‘emailjs-mime-parser’;

Ama import kodunu Node.js desteklemediğinden şu şekilde bir hata ile karşılaşırız.

SyntaxError: Unexpected token import

Import’un çalışabilmesi için babel kullanarak mevcut importları dinamik arka planda require çevirmesi sağlanır. Bu yöntem import => async , require => sync dönüştürür.

npm install babel-register babel-preset-env --save-dev

Bunun için module load sırasında oluşan kod override edilmesi gerekir. Bizim ana kodumuzun olduğu index.js önüne birde pre_index.js gibi bir js dosyası daha oluşturmamız gerekir. Örneğin aşağıdaki gibi..

Uzun süredir farklı sektörlerde (Askeri, Telekomünikasyon, Devlet, Bankacılık, Sigortacılık, Tübitak, SaaS) yazılımlar geliştiriyorum. Bu süreçte Havelsan, Milsoft, T2, Cybersoft ve Thundra firmalarında yönetici ve yazılım mühendisi olarak çalıştım. Deneyimlerimi ve teknolojik bilgi birikimi mi olabildiğince OnurDayibasi.com adresinde toplamaya çalışıyorum. Tüm yazılarıma ve daha fazlasını bu site üzerinden erişebilirsiniz.

--

--