잡히지 않은 ReferenceError : React가 정의되지 않았습니다


89

튜토리얼을 사용하여 ReactJS를 레일과 함께 작동 시키려고합니다 . 이 오류가 발생합니다.


Uncaught ReferenceError: React is not defined

하지만 난 브라우저 콘솔에서 객체 반응에 액세스 할 수 있습니다 I도 추가 공개 / DIST / 터보 react.min.js 설명 된대로 여기에 또한 추가 설명 application.js 라인을 이 답변에 행운을. 또한 오류를 제공합니다.여기에 이미지 설명 입력
//= require components
var React = require('react')
Uncaught ReferenceError: require is not defined

누구든지이 문제를 해결하는 방법을 제안 할 수 있습니까?

[편집 1]
참조 용 소스 코드 :
이것은 내 comments.js.jsx파일입니다.

var Comment = React.createClass({
  render: function () {
    return (
      <div className="comment">
        <h2 className="commentAuthor">
          {this.props.author}
        </h2>
          {this.props.comment}
      </div>
      );
  }
});

var ready = function () {
  React.renderComponent(
    <Comment author="Richard" comment="This is a comment "/>,
    document.getElementById('comments')
  );
};

$(document).ready(ready);

그리고 이것은 내 index.html.erb:

<div id="comments"></div>

답변:


91

webpack을 사용하여 다음 청크로 내 자바 스크립트를 빌드 할 때이 오류를 재현 할 수있었습니다 webpack.config.json.

externals: {
    'react': 'React'
},

위의 구성은 웹팩이 require('react')npm 모듈을로드하여 해결하지 않고 대신라는 전역 변수 (즉, window객체에서) 를 기대 하도록 지시 합니다 React. 해결책은이 구성 부분을 제거하거나 (React가 자바 스크립트와 함께 번들로 제공됨)이 파일이 실행되기 전에 React 프레임 워크를 외부에서로드하는 것입니다 ( window.React존재 하기 때문에 ).


4
이 구성을 제거하면 문제가 해결되었습니다.
DJ2

나를 위해 문제도이 구성 해결 제거
coinhndp

50

내가 사용했기 때문에이 오류가 발생했습니다.

import ReactDOM from 'react-dom'

반응을 가져 오지 않고 아래로 변경하면 :

import React from 'react';
import ReactDOM from 'react-dom';

오류가 해결되었습니다. :)


(플러스 1) - 완벽한 이해를 만든다
폴 Samsotha

2
공장! 파이썬과 같은 언어에서 비롯된 것은 예상치 못한 일입니다. ReactDOM주 파일 에서만 사용 하고 있다면 React. 오, 뭔가 배웠습니다.
jdm

35

가능한 이유는 1. 페이지에 React.JS를로드하지 않았고, 2. 페이지에 위의 스크립트 후에로드했습니다. 해결책은 위에 표시된 스크립트 전에 JS 파일을로드하는 것입니다.

추신

가능한 해결책.

  1. reactwebpack 구성 내부의 externals 섹션에서 언급 한 경우 먼저 react js 파일을 html로 직접로드해야합니다.bundle.js
  2. 라인이 있는지 확인하십시오 import React from 'react';


14

추가해보십시오 :

import React from 'react'
import { render } from 'react-dom'
window.React = React

render()기능 전에 .

이것은 때때로 팝업 반환 오류를 방지합니다.

React가 정의되지 않았습니다.

React창에 추가하면 이러한 문제가 해결됩니다.


1
마지막 줄은 저에게 빠진 부분이었습니다.
Tasos K.

11

Santosh에 추가 :

React를로드 할 수 있습니다.

import React from 'react'

1
@zero_cool 세미콜론은 코드를 더 쉽게 읽을 수 있도록 해주는 것이 좋지만 JavaScript에서는 선택 사항입니다. 생략하면 자동으로 삽입됩니다. 공식 EcmaScript 사양에는 다음과 같은 정보가 있습니다. "또한 토큰으로 간주되지는 않지만 라인 종결자는 입력 요소 스트림의 일부가되어 자동 세미콜론 삽입 (11.9) 프로세스를 안내합니다." from : tc39.github.io/ecma262/#sec-lexical-and-regexp-grammars that point to this : tc39.github.io/ecma262/#sec-automatic-semicolon-insertion 기술적으로 두 코드 예제는 모두 다음과 같습니다. 정확하고 유효한 JS.
Clomp


3

내 코드 react.createClass에서 대문자 대신 소문자로 구성 요소 정의를 잘못 입력했기 때문에이 오류가 발생했습니다 React.createClass.


1

나는 같은 문제에 직면했다. 다음 ReactReactDOM같이 가져 와서 해결했습니다 .

import React from 'react';
import ReactDOM from 'react-dom';


0

당신이 타이프 라이터를 사용하는 경우, 반드시 당신이 있는지 확인 tsconfig.json"jsx": "react""compilerOptions".

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.