node.js - ReactDOM.render 不渲染组件

标签 node.js reactjs

我正在使用 nodeJS 和 React。

在我使用的 Node 中安装 React。

npm install --save react react-dom

这是我的 index.html 文件

<html>
<head>
  <script src="Script/script.jsx" type="text/babel"></script>
</head>
<body>
  <div id="ExperimentForm"></div>
</body>
</html>

脚本.jsx

从“ react ”中导入 react ; 从“react-dom”导入 ReactDOM;

var FormComponent = React.createClass({
  render :function(){
  return(<h2>Hello World</h2>);
  }

})

ReactDOM.render(<FormComponent />, document.getElementById("ExperimentForm"));

我试过用

var express = require('express');
var app = express();

但这也不起作用。

我的 app.js 是

var SwaggerExpress = require('swagger-express-mw');
const express = require('express');
const app = express();
const path = require('path');

    var config = {
      appRoot: __dirname // required config
    };

    app.use(express.static(path.join(__dirname, 'views')));

    app.get('/index', function (req, res) {
      console.log("index page");
      res.sendFile(path.join(__dirname + '/views/index.html'));
    });

    console.log(path.join(__dirname + '/views/index.html'));
    SwaggerExpress.create(config, function (err, swaggerExpress) {
      console.log("Starting server");
      if (err) {
        throw err;
      }


      swaggerExpress.register(app);


      const port = 11011;
      const server = app.listen(port, function () {
        console.log('Server started @ %s!', port);
      });


    });

在谷歌开发者工具中我没有看到任何错误,它似乎加载了 index.html 但没有在浏览器中显示任何内容。

最佳答案

您不能使用import 来获取reactreact-dom。您必须使用来自其 cdn 的 script 标签显式导入它们。此外,要启用 jsx 的解析,您还需要 babel-core。只需从 script.jsx 中删除 import 语句,您的 index.html 应该如下所示

<html>

<head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.2/react.min.js" type="text/javascript"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/15.6.2/react-dom.min.js" type="text/javascript"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js" type="text/javascript"></script>

</head>

<body>
    <div id="ExperimentForm"></div>
    <script src="Script/script.jsx" type="text/babel"></script>
</body>

</html>

关于node.js - ReactDOM.render 不渲染组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47617589/

相关文章:

javascript - Chrome 正在缓存 API 响应而 Safari 没有

javascript - 将额外的 props 传递给 React 组件

javascript - NodeJS 使用管道完成文件写入,然后再继续下一次迭代

javascript - 服务器端连接到 socket.io 服务器

javascript - react .js : useEffect with window resize event listener not working

javascript - 无法使用 setstate Hook 复制数组

javascript - Node.js Websocket 服务器无法在线工作

node.js - 如何在nodejs中找到可读流的内容长度?

javascript - fast-csv 抛出异常 : column header mismatch expected

javascript - 尝试在React Native Stack Navigator v5中访问route.params