我复制+粘贴代码来自:https://stackoverflow.com/questions/41514549/
然后,我修正错误并将'class'改为'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 元件。 at invariant(modules.js?hash = de726ed ...:12672) at Object._renderNewRootComponent(modules.js?hash = de726ed ...:30752) at Object._renderSubtreeIntoContainer(modules.js?hash = de726ed ...:30842) 在渲染(modules.js?hash = de726ed ...:30863) 在app.js?hash = 71ef103 ...:46 在maybeReady(meteor.js?hash = 27829e9 ...:809) 在HTMLDocument.loadingCompleted(meteor.js?hash = 27829e9 ...:821)
让我发疯了......
答案 0 :(得分:37)
基本上,该问题是由于HTML呈现而发生的。创建流星应用程序时,默认情况下会出现火焰,并且您正在处理带有反作用的流星或带有角的流星。您可以通过两种方法解决此错误。
方法1 只需在main.js中添加导入语句
import './main.html'
;
方法2 更好,因为这是我的选择
meteor remove blaze-html-templates
meteor add static-html
答案 1 :(得分:27)
如果您删除blaze-html-templates
,则需要添加static-html
包来编译index.html
并避免此错误(请参阅Meteor Guide,段落结尾):
meteor add static-html
答案 2 :(得分:14)
我有同样的问题。这就是我解决的方法。
在终端中,在项目目录中键入以下行。
meteor remove blaze-html-templates
meteor add static-html
答案 3 :(得分:8)
对我来说,我只需要在尝试渲染DOM之前导入.html文件。
import './main.html';
答案 4 :(得分:4)
meteor remove blaze-html-templates
meteor add static-html
答案 5 :(得分: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'));
});
答案 6 :(得分:0)
我删除了包(blaze-html-templates)。
我认为没有必要使用Meteor + React,但它用于编译main.html。
使用
添加包blaze-html-templatesmeteor add blaze-html-templates
解决问题。
答案 7 :(得分:0)
首先删除blaze模板依赖项
meteor remove blaze-html-templates
然后添加静态html
meteor add static-html
答案 8 :(得分:0)
就我而言,修复很简单。在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>
答案 9 :(得分:0)
这是旧文章,但它在Google搜索结果中排名第一,所以...
我在我的Android版本上遇到此错误,但在Web上却没有,已经清除了火焰并添加了statichtml。
我的问题最终是我在HTML中导入了一个favicon和manifest.json,但我还没有开始创建它们。
我删除了链接,它就像一个魅力。
希望这可以节省一些挖掘工作的时间。