私がエクスプレスで始めたときは常に代わりにインポートを使用するソリューションが必要でした
const express = require("express");
// to
import express from "express"
多くの時間がこの行を通過します:- Unfortunately, Node.js doesn't support ES6's import yet.
他の人を助けるために、ここで新しい2つのソリューションを作成します
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)バベルjs:-
これは2つの部分に分割できます
a)timonweb.comによるソリューション1
b)ソリューション2
使用バベル6(古いバージョンのバベル・プリセット・ステージ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
ああ、私たちは新しい問題を作成します
regeneratorRuntime.mark(function _callee(email, password) {
^
ReferenceError: regeneratorRuntime is not defined
このエラーは、コードでasync / awaitを使用した場合にのみ発生します。次に、カスタムのリジェネレータランタイムとcore-jsを含むポリフィルを使用します。上に追加index.js
import "babel-polyfill"
これにより、非同期/待機を使用できます
使用する Babel 7を
プロジェクトのすべてのものを最新にする必要があります。Babel7 .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
真剣に。あなたが新しい人ならいい質問です。nodemonのyarn start:dev
詳細については、毎回開始サーバーでイノシシを変更するたびに、開発サーバーとしてすべての変更再起動サーバーを自動的に使用します