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

Jua*_*ont 14 javascript meteor reactjs

我复制+粘贴代码来自:https://stackoverflow.com/questions/41514549/

然后,我修复错误并将'class'更改为'id',这样:

main.html中

<head>
  <title>React Meteor Voting</title>
</head>
<body>
  <div id="render-target"></div>
</body>
Run Code Online (Sandbox Code Playgroud)

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>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

的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"
  }
}
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误:

未捕获的错误:_registerComponent(...):目标容器不是DOM元素.在Object._renderNewRootComponent(modules.js?hash = de726ed ...:30752)处的atariant(modules.js?hash = de726ed ...:12672)at at Object._renderSubtreeIntoContainer(modules.js?hash = de726ed ...:30842)at render(modules .js?hash = de726ed ...:30863)在app.js?hash = 71ef103 ...:46 at maybeReady(meteor.js?hash = 27829e9 ...:809)at HTMLDocument.loadingCompleted(meteor.js?hash = 27829e9 ...:821 )

让我抓狂!......

Shr*_*oel 43

基本上,由于HTML呈现问题.当你创建流星应用程序时,它会默认出现火焰,你正在使用反应或流星与角度来制作流星.您可以通过两种方法解决此错误.

方法1 只需在main.js中添加import语句

import './main.html';

方法2,因为这是我的选择

meteor remove blaze-html-templates
meteor add static-html
Run Code Online (Sandbox Code Playgroud)

  • 由于解释,更好的答案 (3认同)

Xav*_*our 27

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

 meteor add static-html
Run Code Online (Sandbox Code Playgroud)


Sal*_*mit 14

我有同样的问题.这就是我解决它的方式.

在终端中,在项目目录中键入以下行.

meteor remove blaze-html-templates
meteor add static-html
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在使用Steven Grider在Meteor上的Udemy课程,这就是答案。 (2认同)

Jos*_*Joe 8

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

import './main.html';


小智 5

meteor remove blaze-html-templates
meteor add static-html
Run Code Online (Sandbox Code Playgroud)


Chr*_*kes 1

将脚本标签添加到结束</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'));
});
Run Code Online (Sandbox Code Playgroud)