Đối với mã phía máy khách , bạn đang làm đúng. babelify
nó và gửi nó cho khách hàng.
Đối với mã phía máy chủ , tôi sẽ chỉ tạo một bản dựng thông thường bằng cách sử dụng babel-cli
Theo http://babeljs.io/docs/setup/#babel_register , babel-register
được không có nghĩa là để sử dụng sản xuất - Các yêu cầu móc chủ yếu được khuyên dùng cho các trường hợp đơn giản.
cho Babel 6+
Kể từ Babel 6, không có phép biến đổi nào được bao gồm theo mặc định. Vì vậy, hãy bắt đầu bằng cách cài đặt babel-cli
và babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Thêm một chuyển đổi vào .babelrc
tệp của bạn - đây là mô-đun cá nhân mà chúng tôi đã tải xuống ở trên. Hãy xem danh sách đầy đủ các cài đặt trước để xem (các) cài đặt nào phù hợp nhất với bạn.
{
"presets": ["es2015"]
}
Thêm một build
tập lệnh vào của bạn package.json
. Dưới đây src
là tệp đầu vào của bạn và build
là tệp đầu ra được chuyển đổi
"scripts": {
"build": "babel src -d build"
}
Sau đó xây dựng nó!
$ npm run build
Sau đó chạy mã của bạn. Tại thời điểm này, bạn sẽ muốn thực thi các tệp trong build
thư mục của mình
$ npm start
đối với Babel <= 5, chỉ cần sử dụng hook yêu cầu.
require("babel/register");
Tất cả các tệp tiếp theo được yêu cầu bởi nút có phần mở rộng .es6 , .es , .jsx và .js sẽ được Babel chuyển đổi. Các polyfill cũng được tự động yêu cầu.
Bạn sẽ có thể giữ các tệp nguồn của mình trong ES6 nhưng vẫn thực thi chúng bằng cách sử dụng node server.js
Theo nhận xét của bạn, bạn có vẻ đang gặp một chút rắc rối. Đặc biệt chú ý đến phần được đánh dấu màu vàng ở trên. Tệp đầu tiên của bạn chỉ có thể là ES5, được chạy bởi chính nút. Tất cả các yêu cầu tiếp theo sẽ được chuyển đổi bởi Babel ...
Đây là thiết lập điển hình có thể trông như thế nào
server.js
require("babel/register");
var app = require("./app.js");
app.js
đốt nó lên!
$ node server.js
require("babel/register");
trong server.js của tôi và khi tôi chạynode server.js
tôi nhận được lỗi:Unexpected reserved word: import ...
vì thế nó không có vẻ để làm việc