जब मैं एक्सप्रेस के साथ शुरू किया गया था तो हमेशा आवश्यकता के बजाय आयात का उपयोग करने के लिए एक समाधान चाहता था
const express = require("express");
// to
import express from "express"
कई बार इस लाइन से गुजरते हैं: - Unfortunately, Node.js doesn't support ES6's import yet.
अब अन्य की मदद के लिए मैं यहां दो नए समाधान तैयार कर रहा हूं
1) esm : -
शानदार ढंग से सरल, बेबल-कम, बंडल-कम ECMAScript मॉड्यूल लोडर। चलो इसे काम करते हैं
yarn add esm / npm install esm
start.js बनाएं या अपने नामस्थान का उपयोग करें
require = require("esm")(module/*, options*/)
// Import the rest of our application.
module.exports = require('./src/server.js')
// where server.js is express server start file
के अपने package.josn
पास पथ में बदलेंstart.js
"scripts": {
"start": "node start.js",
"start:dev": "nodemon start.js",
},
"dependencies": {
+ "esm": "^3.2.25",
},
"devDependencies": {
+ "nodemon": "^1.19.2"
}
2) बबेल जेएस : -
इसे 2 भाग में विभाजित किया जा सकता है
a) समाधान 1 timonweb.com के लिए धन्यवाद
बी) समाधान 2
उपयोग कोलाहल 6 (के पुराने संस्करण कोलाहल-पूर्व निर्धारित चरण -3 ^ 6.0 बनाने) .babelrc
अपने रूट फ़ोल्डर में फ़ाइल
{
"presets": ["env", "stage-3"]
}
बैबल-प्रीसेट-स्टेज -3 स्थापित करें
yarn add babel-cli babel-polyfill babel-preset-env bable-preset-stage-3 nodemon --dev
Package.json में बदलें
"scripts": {
+ "start:dev": "nodemon --exec babel-node -- ./src/index.js",
+ "start": "npm run build && node ./build/index.js",
+ "build": "npm run clean && babel src -d build -s --source-maps --copy-files",
+ "clean": "rm -rf build && mkdir build"
},
"devDependencies": {
+ "babel-cli": "^6.26.0",
+ "babel-polyfill": "^6.26.0",
+ "babel-preset-env": "^1.7.0",
+ "babel-preset-stage-3": "^6.24.1",
+ "nodemon": "^1.19.4"
},
अपना सर्वर शुरू करें
yarn start / npm start
ऊह नहीं हम नई समस्या पैदा करते हैं
regeneratorRuntime.mark(function _callee(email, password) {
^
ReferenceError: regeneratorRuntime is not defined
यह त्रुटि केवल तब आती है जब आप अपने कोड में async / प्रतीक्षा का उपयोग करते हैं। फिर पॉलीफिल का उपयोग करें जिसमें एक कस्टम रीजनरेटर रनटाइम और कोर-जेएस शामिल हैं। के ऊपर जोड़ेंindex.js
import "babel-polyfill"
यह आपको async / प्रतीक्षा का उपयोग करने की अनुमति देता है
उपयोग 7 का
अपने प्रोजेक्ट में हर बात को आगे बढ़ाने की जरूरत है, बबेल 7 .babelrc से शुरू करें
{
"presets": ["@babel/preset-env"]
}
पैकेज में कुछ बदलाव। Json
"scripts": {
+ "start:dev": "nodemon --exec babel-node -- ./src/index.js",
+ "start": "npm run build && node ./build/index.js",
+ "build": "npm run clean && babel src -d build -s --source-maps --copy-files",
+ "clean": "rm -rf build && mkdir build",
....
}
"devDependencies": {
+ "@babel/cli": "^7.0.0",
+ "@babel/core": "^7.6.4",
+ "@babel/node": "^7.0.0",
+ "@babel/polyfill": "^7.0.0",
+ "@babel/preset-env": "^7.0.0",
+ "nodemon": "^1.19.4"
....
}
और import "@babel/polyfill"
प्रारंभ बिंदु पर उपयोग करें
import "@babel/polyfill"
import express from 'express'
const app = express()
//GET request
app.get('/', async (req, res) {
// await operation
res.send('hello world')
})
app.listen(4000, () => console.log('🚀 Server listening on port 400!'))
क्या आप सोच रहे हैं क्यों start:dev
गंभीरता से। आप नए हैं तो यह अच्छा सवाल है। प्रत्येक परिवर्तन शुरू सर्वर के साथ सूअर हर बार तो कर रहे हैं का उपयोग करें yarn start:dev
के बारे में अधिक के लिए हर बदलाव पुनः आरंभ सर्वर स्वचालित रूप से विकास सर्वर के रूप में nodemon