Ich habe eine Datei test_stuff.js, mit der ich laufe npm test
Es sieht so ziemlich so aus:
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));
});
});
});
Leider bekomme ich den Fehler
/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)
Was bedeutet das? Ich importiere React aus 'Reagieren' erfolgreich. Warum sollte React also undefiniert sein? Es ist _react.React, was auch immer das bedeutet ...
javascript
reactjs
npm
react-jsx
Irgendein Typ
quelle
quelle
import * as React from "react"
import React from 'react'
ist dies nicht gültig, da React nicht der Standardexport ist, aber aufgrund der Verwendung von ES6 in Verbindung mit babel funktioniert. Möglicherweise unterscheidet sich Ihre Babel-Konfiguration, sodass Sie die richtige gültige Syntax verwenden müssenimport * as React from 'react'
. Für weitere Informationen: github.com/DefinitelyTyped/DefinitelyTyped/issues/5128babel-preset-expo
esModuleInterop
in der tsconfig beeinflusst. Die tsconfig muss für die Testdateien gelten (checkinclude
andfiles
).Das hat bei mir funktioniert. Ich bin mir jedoch nicht sicher, warum meine Version dieses Problems behoben wurde. Wenn Sie also jemand sind, der auf dieses Problem gestoßen ist und die Create-React-App als Start-Boilerplate verwenden, reicht diese Art des Importierens von React aus. (Stand 18. Oktober, lol)
quelle
import { React, useState } from 'react'
;'react'
nichtReact
als nicht standardmäßig per sé exportiert wird . Wie auch immerexport useState
,export Component
usw.Für diejenigen, die ReactJS mit TypeScript arbeiten.
quelle
Ändern: import {Reagieren} von ‚reagieren‘ zu importieren Reagieren von ‚reagieren‘ Da ein Standardexport React ist und Sie brauchen keine geschweiften Klammern für alle Standard - Exporte.
quelle
Wenn Sie mehrere Klassen aus "Reagieren" importieren müssen, können Sie einen Alias für diese außer Reagieren festlegen. Etwas wie,
quelle
Dieser Fehler trat mir aufgrund von Nachlässigkeit auf. Es ist eigentlich
Klammern stehen für benannte Exporte wie diese:
quelle