Als ich mit Express angefangen habe, wollte ich immer eine Lösung, um stattdessen Import zu verwenden
const express = require("express");
// to
import express from "express"
Viele Male gehen Sie durch diese Zeile: - Unfortunately, Node.js doesn't support ES6's import yet.
Um anderen zu helfen, erstelle ich hier zwei neue Lösungen
1) esm : -
Der genial einfache ECMAScript-Modullader ohne Babel und ohne Bundle. Lass es funktionieren
yarn add esm / npm install esm
Erstellen Sie start.js oder verwenden Sie Ihren Namespace
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
Ändern Sie Ihren package.josn
Passpfad vonstart.js
"scripts": {
"start": "node start.js",
"start:dev": "nodemon start.js",
},
"dependencies": {
+ "esm": "^3.2.25",
},
"devDependencies": {
+ "nodemon": "^1.19.2"
}
2) Babel js : -
Dies kann in zwei Teile geteilt werden
a) Lösung 1 dank timonweb.com
b) Lösung 2
Verwenden Sie Babel 6 (ältere Version von babel-preset-stage-3 ^ 6.0 ), um eine .babelrc
Datei in Ihrem Stammordner zu erstellen
{
"presets": ["env", "stage-3"]
}
Installieren Sie babel-preset-stage-3
yarn add babel-cli babel-polyfill babel-preset-env bable-preset-stage-3 nodemon --dev
Änderung in 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"
},
Starten Sie Ihren Server
yarn start / npm start
Oooh nein, wir schaffen ein neues Problem
regeneratorRuntime.mark(function _callee(email, password) {
^
ReferenceError: regeneratorRuntime is not defined
Dieser Fehler tritt nur auf, wenn Sie async / await in Ihrem Code verwenden. Verwenden Sie dann Polyfill, das eine benutzerdefinierte Regenerator-Laufzeit und Core-Js enthält. hinzufügen aufindex.js
import "babel-polyfill"
Auf diese Weise können Sie async / await verwenden
benutze Babel 7
Müssen Sie alles in Ihrem Projekt auf den neuesten Stand bringen, beginnen Sie mit babel 7 .babelrc
{
"presets": ["@babel/preset-env"]
}
Einige Änderungen in 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"
....
}
und import "@babel/polyfill"
am Startpunkt verwenden
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!'))
Denkst du warum? start:dev
Ernsthaft. Es ist eine gute Frage, wenn Sie neu sind. Jede Änderung, die Sie jedes Mal yarn start:dev
mit dem Startserver ausführen, wird dann als Entwicklungsserver verwendet. Jede Änderung startet den Server automatisch neu, um mehr über nodemon zu erfahren