เมื่อฉันเริ่มต้นด้วยด่วนต้องการโซลูชั่นที่จะใช้นำเข้าแทนต้องการ
const express = require("express");
// to
import express from "express"
หลายครั้งที่ต้องผ่านสายนี้: - Unfortunately, Node.js doesn't support ES6's import yet.
ตอนนี้เพื่อช่วยเหลือผู้อื่นฉันสร้างสองโซลูชั่นใหม่ที่นี่
1) esm : -
ตัวโหลดโมดูล ECMAScript ที่เรียบง่ายแบบ babel-less, bundle-less มาทำให้มันใช้งานได้
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) Babel js : -
สามารถแบ่งออกเป็น 2 ส่วน
a) โซลูชันที่ 1ขอบคุณ timonweb.com
b) โซลูชันที่ 2
ใช้Babel 6 (รุ่นเก่ากว่าของbabel-preset-stage-3 ^ 6.0 ) สร้าง.babelrc
ไฟล์ที่โฟลเดอร์รูทของคุณ
{
"presets": ["env", "stage-3"]
}
ติดตั้ง babel-preset-stage-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
Oooh ไม่เราสร้างปัญหาใหม่
regeneratorRuntime.mark(function _callee(email, password) {
^
ReferenceError: regeneratorRuntime is not defined
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณใช้ async / รอคอยในรหัสของคุณ จากนั้นใช้ polyfill ที่รวมรันไทม์ของตัวกำเนิดที่กำหนดเองและ core-js เพิ่มที่ด้านบนของindex.js
import "babel-polyfill"
อนุญาตให้คุณใช้ async / คอย
ใช้Babel 7
ต้องอัปเดตทุกสิ่งในโครงการของคุณให้เริ่มด้วย babel 7 .babelrc
{
"presets": ["@babel/preset-env"]
}
การเปลี่ยนแปลงบางอย่างใน 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": "^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