2015-11-02 25 views
6

Tôi đang gặp khó khăn khi tìm đúng cách để sử dụng babel để cho phép tôi sử dụng jsx trong serverside.Hiển thị Phản hồi của máy chủ Thẻ không mong đợi, JSX và Babel

Nút-jsx không được dùng cho babel. Có vẻ như babel-core/register là những gì được cho là được sử dụng nhưng tôi vẫn nhận được các vấn đề về mã thông báo không mong muốn.

Tôi đã tạo một repo có vấn đề.

https://github.com/pk1m/Stackoverflow-helpme

Khi tôi chạy node app hoặc npm run watch-js tôi tiếp tục nhận được dấu hiệu bất ngờ đề cập đến mã JSX '<'.

Làm thế nào để tôi có được babel để transpile JSX, hoặc tôi hoàn toàn tắt, cảm ơn.

+0

Bạn chưa cài đặt - bộ nạp. Kiểm tra dự án này ra cho các tập tin cấu hình mẫu. https://github.com/kriasoft/react-starter-kit –

Trả lời

20

Bạn cần sử dụng babel/register (npm i babel --save). Và chạy trên máy chủ của bạn:

require('babel/register')({ 
    stage: 0 
}); 

Bạn có thể bỏ qua giai đoạn 0 nếu bạn không sử dụng tính năng babel thử nghiệm. Ngoài ra, bạn có thể muốn đặt các tùy chọn đó vào .babelrc thay thế.

Lưu ý rằng nó sẽ chỉ hoạt động đối với các tệp được yêu cầu SAU KHI gọi đó (vì vậy nó sẽ không ảnh hưởng đến tệp bạn đưa vào).

Bạn cũng có thể có cài đặt trước và các tùy chọn khác trong tệp .babelrc.

Đối babel 6x:

npm i babel-core babel-preset-es2015 babel-preset-react --save 

require('babel-core/register')({ 
    presets: ['es2015', 'react'] 
}); 

Lưu ý: cũng có những giai đoạn 0-2 cài đặt trước.

Đối xem như bạn đã viết trong package.json của bạn, bạn có thể thử một lệnh CLI như một facebook đang đề xuất trong tờ giấy here (hoặc webpack sử dụng):

babel --presets react es2015 --watch app/ --out-dir build/ 
babel
+0

ok, tôi sẽ cố gắng khi tôi về nhà. JSX có phải là một tính năng thử nghiệm của babel không? – pk1m

+1

@ pk1m không có jsx và các tính năng khác của es6 sẽ hoạt động, giai đoạn 0 dành cho những thứ được đề xuất như 'tĩnh' trong es7 và các công cụ thử nghiệm khác (tĩnh là tốt nếu bạn sử dụng React.Component thay vì React.createClass) –

+0

ok, Tôi đã sử dụng 'require ('babel/register')' nhưng nó nói nó không được chấp nhận cho 'require ('babel-core/register')'. Vì vậy, tôi sử dụng nó thay vào đó nếu bạn có thể nhìn thấy trong git của tôi. Vẫn ném lỗi cho '<' – pk1m

Các vấn đề liên quan