繁体   English   中英

Meteor-React 错误:修复后目标容器不是 DOM 元素

[英]Meteor-React Error: Target Container is not a DOM element, after fix

我从以下位置复制+粘贴代码: https : //stackoverflow.com/questions/41514549/

然后,我修复错误并通过“id”更改“class”,因此:

主文件

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

主文件

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

包.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) 在渲染 (modules) .js?hash=de726ed...:30863) at app.js?hash=71ef103...:46 at mayReady (meteor.js?hash=27829e9...:809) at HTMLDocument.loadingCompleted (meteor.js?hash=27829e9...:821) )

快把我逼疯了....¡¡¡¡

基本上,问题是由于 HTML 渲染而发生的。 当您创建流星应用程序时,默认情况下会出现火焰,并且您正在使用 react 处理流星或使用 angular 处理流星。 您可以通过两种方法解决此错误。

方法一在main.js中添加import语句

import './main.html' ;

方法 2首选,因为它是我的选择

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

如果您删除了blaze-html-templates ,则需要添加static-html包来编译index.html并避免此错误(请参阅Meteor 指南,段落末尾):

 meteor add static-html

我有同样的问题。 我就是这样解决的。

在您的终端中,在项目目录中键入以下几行。

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

对我来说,我只需要在尝试渲染到 DOM 之前导入 .html 文件。

import './main.html';

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

将您的脚本标签添加到结束</body>标签之前,很可能是在您的 DOM ID 之前加载的脚本。

也换个方式...

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

首先移除 blaze 模板依赖

meteor remove blaze-html-templates

然后添加静态html

meteor add static-html

我已经删除了包 (blaze-html-templates) 。

我认为 Meteor+React 不是必需的,但它用于编译 main.html。

添加包 blaze-html-templates

流星添加 blaze-html-templates

解决这个问题。

在我的情况下,修复很简单。 在 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>

这是一篇旧帖子,但它在谷歌结果中排名第一,所以......

我在我的 android build 但不是 web 上收到这个错误,已经删除了 blaze 并添加了 statichtml ..

我的问题最终是我的 html 中导入了一个 favicon 和 manifest.json,但我还没有开始创建它们。

我删除了链接,它就像一个魅力。

希望这可以为某人节省几个小时的挖掘时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM