构建React 0.12项目的正确方法是什么?

时间:2015-02-08 20:56:13

标签: javascript node.js facebook requirejs reactjs

我刚从React 0.11.1升级到0.12.2。到目前为止,我的代码结构是因为我的组件在他们自己的目录中,我会使用Grunt将它们编译到javascript目录,然后将它与React.js连接成一个文件以在index.html中使用。

Project
    |_index.html
    | JSX
        |_someFile.jsx
    | JS
        |_somefile.js
        | Lib
            |_react.js
    | Production
        |_concatenated.js


 module.exports = function (grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        react: {
            dynamic_mappings: {
                files: [
                    {
                        expand: true,
                        cwd: 'jsx/',
                        src: ['*/*.jsx', '*.jsx'],
                        dest: 'js/',
                        ext: '.js'
                }
              ]
            }
        },
        concat: {
            dist: {
                src: ['js/lib/*.js', 'js/*/*.js'], 
                dest: 'prod/built.js'
            }
        },
    ...
    });
};

一旦我升级到React 0.12.2,我收到消息“Warning: Something is calling a React component directly. Use a factory or JSX instead. See: h[ttp://fb.me/react-legacyfactory][1]”代码可以正常工作,但显然我正在使用一些旧的约定。我看了react-legacyfactory和新的documentation,看起来我只需要为项目添加require,然后调用var React = require('react'); 我这样做了,我甚至添加了反应并重新解决了我的package.json,以防万一,但现在我得到“Uncaught Error: Module name "react" has not been loaded yet for context: _. Use require([])”我不是非常熟悉require,或者现在是如何构建React的。连接我的所有JS文件是否与React项目现在应该如何工作相矛盾?

1 个答案:

答案 0 :(得分:0)

您使用的是什么版本的grunt-react?我相信如果您在页面中使用最新版本的react,但是您使用旧版本的react-tools编译了jsx,则会收到此错误。