2016-09-10 25 views
8

Tôi có một tập tin test_stuff.js mà tôi đang chạy với npm testPhản ứng tập tin JSX đưa ra lỗi "Không thể đọc thuộc 'createElement' không xác định"

Nó khá nhiều trông như sau:

import { assert } from 'assert'; 
import { MyProvider } from '../src/index'; 
import { React } from 'react'; 

const myProvider = (
    <MyProvider> 
    </MyProvider> 
); 

describe('Array', function() { 
    describe('#indexOf()', function() { 
    it('should return -1 when the value is not present', function() { 
     assert.equal(-1, [1,2,3].indexOf(4)); 
    }); 
    }); 
}); 

Thật không may , Tôi gặp lỗi

/Users/me/projects/myproj/test/test_stuff.js:11 
var myProvider = _react.React.createElement(_index.MyProvider, null); 
          ^

TypeError: Cannot read property 'createElement' of undefined 
    at Object.<anonymous> (/Users/me/projects/myproj/test/test_stuff.js:7:7) 

Điều đó có nghĩa là gì? Tôi đang nhập React từ 'phản ứng' thành công, vậy tại sao React lại không được xác định? Đó là _react.React, điều đó có nghĩa là ...

Trả lời

20

Để nhập React do import React from 'react' Bạn thêm dấu ngoặc khi điều bạn đang nhập không phải là mặc định xuất trong mô-đun hoặc tệp đó. Trong trường hợp phản ứng, đó là xuất mặc định.

Điều này có thể áp dụng cho các mục nhập khác của bạn tùy thuộc vào cách bạn xác định chúng.

+3

Tôi không chắc tại sao lại nhưng đối với tôi, đó là 'import * như React từ" phản ứng "' – Clintm

+3

Về mặt kỹ thuật, 'import React from 'react'' không hợp lệ vì React không phải là mặc định xuất khẩu nhưng nó hoạt động do sử dụng ES6 kết hợp với babel. Có lẽ cấu hình Babel của bạn khác nhau buộc bạn phải sử dụng đúng cú pháp hợp lệ, đó là 'import * như React từ 'react''. Để biết thêm thông tin: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/5128 – Kafo

+0

Một điều quan trọng khác mà tôi quên đề cập đến là JSX yêu cầu React phải ở trong phạm vi hoạt động. Tuy nhiên, bạn không thực sự cần React bên cạnh Component và có thể xuất khẩu có tên khác. Có lẽ trong tương lai bạn sẽ không nhập React. – Kafo

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