React JSX 文件给出错误 "Cannot read property 'createElement' of undefined"

React JSX file giving error "Cannot read property 'createElement' of undefined"

我有一个文件 test_stuff.js 我是 运行 npm test

它看起来像这样:

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));
    });
  });
});

不幸的是,我得到了错误

/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)

这是什么意思?我正在从 'react' 成功导入 React,那么为什么 React 会未定义?它是 _react.React,不管是什么意思...

要导入 React,请执行 import React from 'react' 当您导入的内容不是该模块或文件中的默认导出时,您可以添加括号。在反应的情况下,它是默认导出。

这可能适用于您的其他导入,具体取决于您如何定义它们。

import React, { Component } from 'react'

这对我有用。不过,我不确定为什么它解决了我对这个问题的看法。所以如果你是偶然发现这个问题的人并且你使用 create-react-app 作为你的起始样板,那么这种导入 React 的方式就可以解决问题。 (截至 18 年 10 月,哈哈)

对于使用 TypeScript 使用 ReactJS 的人。

import * as React from 'react';

变化: 从 'react' 导入 { React } 到 从 'react' 导入 React 因为 React 是默认导出,所以任何默认导出都不需要花括号。

如果您需要从 'react' 导入多个 类,您可以为它们取一个别名,React 除外。像,

import React, * as react from 'react';

这个错误是我粗心造成的。其实是

import React from 'react';

括号用于命名导出,例如:

import React, { useState, useEffect } from 'react';

React 在该模块中默认导出,不需要 {}。

尝试使用析构函数导入 React 对象可能会导致您遇到这样的问题 import {React} from 'react';。 这可能是 90% 的错误的原因 运行 上述代码。

而是使用: import React from 'react';

然后您可以通过以下方式访问 React class 的任何成员: 反应。

这个错误可能是由于粗心造成的。请加

import React from 'react'

之后会解决

从react导入React时出现这个问题,我把它放在大括号里了。

请这样做:

import React, {useState} from "react";

而不是:

import {React, useState} from "react";