Ошибка Meteor-React: Target Container не является элементом DOM после исправления

Скопируйте + вставьте код с: https://stackoverflow.com/info/41514549/

Затем я исправляю ошибку и меняю "класс" на "id" так:

main.html

<head>
  <title>React Meteor Voting</title>
</head>
<body>
  <div id="render-target"></div>
</body>

main.jsx

import React, { Component } from 'react';
import {Meteor} from 'meteor/meteor';
import { render } from 'react-dom';

Meteor.startup(() => {
  render(<App />, document.getElementById('render-target'));
});

class App extends Component {
  render(){
    return (
      <h1>Hello!</h1>
    );
  }
}

package.json

{
  "name": "test-react",
  "private": true,
  "scripts": {
    "start": "meteor run"
  },
  "dependencies": {
    "babel-runtime": "^6.20.0",
    "meteor-node-stubs": "~0.2.4",
    "react": "^15.5.4",
    "react-dom": "^15.5.4"
  }
}

Но у меня такая же ошибка:

Ошибка нечистоты: _registerComponent (...): Контейнер цели не является элементом DOM. в инварианте (modules.js? hash = de726ed...: 12672) в Object._renderNewRootComponent (modules.js? hash = de726ed...: 30752) в Object._renderSubtreeIntoContainer (modules.js? hash = de726ed...: 30842) при рендере (модули.js? hash = de726ed...: 30863) at app.js? hash = 71ef103...: 46 at maybeReady (meteor.js? hash = 27829e9...: 809) в HTMLDocument.loadingCompleted(meteor.js? hash = 27829e9...: 821 )

Меня сводит с ума.... ¡¡¡¡¡

Ответы

Ответ 1

В основном проблема возникает из-за HTML-рендеринга. Когда вы создаете приложение метеоритов, оно по умолчанию походит на пламя, и вы работаете с метеором с реакцией или метеором с угловым. Вы решаете эту ошибку двумя способами.

Метод 1 просто добавьте оператор import в main.js

import './main.html';

Метод 2 Предпочитаемый, поскольку это мой выбор

meteor remove blaze-html-templates
meteor add static-html

Ответ 2

Если вы удалили blaze-html-templates вам нужно добавить static-html пакет для компиляции index.html и избежать этой ошибки (см. Руководство Meteor, конец абзаца):

 meteor add static-html

Ответ 3

У меня такая же проблема. Вот как я это решил.

В вашем терминале введите следующие строки в каталоге проекта.

meteor remove blaze-html-templates
meteor add static-html

Ответ 4

Для меня мне просто нужно было импортировать файл.html, прежде чем пытаться выполнить рендеринг в DOM.

import './main.html';

Ответ 5

meteor remove blaze-html-templates
meteor add static-html

Ответ 6

Добавьте свой тег скрипта до закрытия </body> скорее всего, скрипта, загруженного до вашего DOM-идентификатора.

также переключите это вокруг...

import React, { Component } from 'react';
import {Meteor} from 'meteor/meteor';
import { render } from 'react-dom';

class App extends Component {
  render(){
    return (
      <h1>Hello!</h1>
    );
  }
}

Meteor.startup(() => {
  render(<App />, document.getElementById('render-target'));
});

Ответ 7

Я удалил пакет (blaze-html-templates).

Я предположил, что быть Meteor + React не понадобится, но он используется для компиляции main.html.

Добавление пакета blaze-html-шаблонов с помощью

meteor добавить blaze-html-шаблоны

решать проблему.

Ответ 8

Сначала удалите зависимость шаблона пламени

meteor remove blaze-html-templates

Затем добавьте статический html

meteor add static-html

Ответ 9

В моем случае это было просто. В HTML измените класс на id.

render( <h1>Hello</h1>, document.getElementById("app"))

<body>
<div class="app"><'enter code here'/div>
</body>

<body>
<div id="app"><'enter code here'/div>
</body>