Đối với mã phía máy khách , bạn đang làm đúng. babelifynó 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-clivà babel-preset-es2015.
$ npm install --save-dev babel-cli babel-preset-es2015
Thêm một chuyển đổi vào .babelrctệ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 buildtập lệnh vào của bạn package.json. Dưới đây srclà tệp đầu vào của bạn và buildlà 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 buildthư 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.jstôi nhận được lỗi:Unexpected reserved word: import ...vì thế nó không có vẻ để làm việc