Mam plik test_stuff.js, z którym pracuję npm test
Wygląda to mniej więcej tak:
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));
});
});
});
Niestety pojawia się błąd
/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)
Co to znaczy? Importuję Reacta z polecenia „reaguj”, więc dlaczego React miałby być niezdefiniowany? To jest _react. React, cokolwiek to znaczy ...
javascript
reactjs
npm
react-jsx
Jakiś facet
źródło
źródło
import * as React from "react"
import React from 'react'
nie jest poprawne, ponieważ React nie jest domyślnym eksportem, ale działa dzięki używaniu ES6 w połączeniu z babel. Może twoja konfiguracja babel jest inna, co zmusza cię do użycia poprawnej prawidłowej składni, którą jestimport * as React from 'react'
. Więcej informacji: github.com/DefinitelyTyped/DefinitelyTyped/issues/5128babel-preset-expo
ReactesModuleInterop
w pliku tsconfig. Tsconfig musi mieć zastosowanie do plików testowych (sprawdźinclude
ifiles
).To zadziałało dla mnie. Nie jestem jednak pewien, dlaczego naprawiło to moją wersję tego problemu. Więc jeśli jesteś kimś, kto natknął się na ten problem i używasz aplikacji create-react-jako swojego początkowego schematu, ten sposób importowania React załatwi sprawę. (od października '18, lol)
źródło
import { React, useState } from 'react'
;'react'
nie eksportujeReact
jako niedomyślne per se. Jednakexport useState
,export Component
itpDla tych, którzy pracują w ReactJS z TypeScript.
źródło
Zmiana: importuj {React} z „reaguj”, aby importować Reaguj z „reaguj” Ponieważ React jest domyślnym eksportem i nie potrzebujesz nawiasów klamrowych do żadnego domyślnego eksportu.
źródło
Jeśli chcesz zaimportować wiele klas z 'React', możesz mieć dla nich alias z wyjątkiem React. Coś jak,
źródło
Ten błąd wystąpił mi z powodu nieostrożności. Właściwie to
Nawiasy dotyczą nazwanych eksportów, takich jak ten:
źródło
React
jest eksportowany domyślnie w tym module, nie ma potrzeby {}.źródło