Réagir JSX fichier en donnant d'erreur “Impossible de lire la propriété 'createElement' undefined”
J'ai un fichier test_stuff.js que je suis en cours d'exécution avec npm test
Il ressemble à ceci:
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));
});
});
});
Malheureusement, j'obtiens l'erreur
/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)
Ça veut dire quoi? Je suis de l'importation de Réagir à partir de 'réagir' avec succès, alors pourquoi ne Réagissent-être pas définie? Il est _react.Réagir, quoi que cela signifie...
OriginalL'auteur Some Guy | 2016-09-10
Vous devez vous connecter pour publier un commentaire.
À l'importation de Réagir ne
import React from 'react'
Vous ajoutez des crochets lorsque la chose que vous importez est pas la valeur par défaut à l'exportation en ce que le module ou le fichier. En cas de réagir, c'est la valeur par défaut à l'exportation.Cela pourrait s'appliquer à d'autres importations selon la façon dont vous les avez définies.
import * as React from "react"
Techniquement parlant,
import React from 'react'
n'est pas valide depuis Réagir n'est pas la valeur par défaut à l'exportation, mais il fonctionne grâce à l'utilisation de ES6 en conjonction avec babel. Peut-être que votre babel de configuration sont différents de vous forcer à utiliser la bonne syntaxe valide qui estimport * as React from 'react'
. Pour plus d'info: github.com/DefinitelyTyped/DefinitelyTyped/issues/5128Une autre chose importante que j'ai oublié de mentionner, c'est que JSX besoin de Réagir à la portée de travailler. Cependant, vous n'avez pas vraiment besoin de Réagir outre Composant et peut-être d'autres nommé exportations. Peut-être que dans l'avenir vous ne serez pas à l'importation de Réagir.
Je suis l'aide de réagir indigènes de l'expo et mon babel preset est
babel-preset-expo
github.com/expo/babel-preset-expo/blob/master/index.jscomme un test, vous pouvez ajouter
babel-preset-es2015
à vos réglages et changement instruction import pourimport React from 'react'
. Vous pouvez le trouver ici: npmjs.com/package/babel-preset-es2015OriginalL'auteur Kafo
Cela a fonctionné pour moi. Je ne suis pas sûr pourquoi elle fixe ma version de cette question, bien que. Donc, si vous êtes quelqu'un qui a trébuché sur ce problème et que vous utilisez créez-réagir-app comme passe-partout, cette manière d'importer de Réagir fera l'affaire. (Octobre 18, lol)
OriginalL'auteur TJ Allen