Express로 시작했을 때 항상 가져 오기를 사용하는 솔루션이 필요했습니다.
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) 바벨 js :-
이것은 두 부분으로 나눌 수 있습니다
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가 포함 된 polyfill을 사용하십시오. 위에 추가index.js
import "babel-polyfill"
이를 통해 async / await를 사용할 수 있습니다
바벨 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
자동으로 개발 서버 로 사용 하십시오.