Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误呈现<;路由器>;在ES6:type.toUpperCase中使用React路由器不是一个函数_Javascript_Node.js_Reactjs_Ecmascript 6_React Router - Fatal编程技术网

Javascript 未捕获类型错误呈现<;路由器>;在ES6:type.toUpperCase中使用React路由器不是一个函数

Javascript 未捕获类型错误呈现<;路由器>;在ES6:type.toUpperCase中使用React路由器不是一个函数,javascript,node.js,reactjs,ecmascript-6,react-router,Javascript,Node.js,Reactjs,Ecmascript 6,React Router,我最近升级到React v。0.14.0,反应域v。0.14.0和反应路由器v。1.0.0-rc3,我正在努力解决以下错误。我已经在和文章中阅读并尝试了解决方案,但我的代码使用ES6,无法让它工作 调用ReactDOM.render方法时,在我的客户端app.js中发生错误 从“React”导入React; 从“react dom”导入react dom; 从“反应路由器”导入路由器; 从“./routes”导入路由; 从“history/lib/createBrowserHistory”导入c

我最近升级到React v。0.14.0,反应域v。0.14.0和反应路由器v。1.0.0-rc3,我正在努力解决以下错误。我已经在和文章中阅读并尝试了解决方案,但我的代码使用ES6,无法让它工作

调用
ReactDOM.render
方法时,在我的客户端
app.js
中发生错误

从“React”导入React;
从“react dom”导入react dom;
从“反应路由器”导入路由器;
从“./routes”导入路由;
从“history/lib/createBrowserHistory”导入createBrowserHistory;
让app=document.getElementById('app');
让历史记录=createBrowserHistory();
ReactDOM.render(,app);
这是来自我的
routes.js

从“React”导入React;
从“react router”导入{Route,IndexRoute};
从“./components/App”导入应用程序;
从“./components/Home”导入Home;
导出默认值(
);
为了完整起见,这是我的服务器端渲染中间件,它似乎工作得很好

app.use(功能(请求、恢复){
匹配(
{路由,位置:req.path},
(错误、重定向位置、渲染器操作)=>{
如果(错误){
res.send(500,错误消息)
}else if(重定向位置){
决议(302,
重定向位置.pathname+
重定向位置(搜索)
}else if(渲染器操作){
让html=renderToString();
让page=swig.renderFile('views/index.html',{html:html});
资源状态(200)。发送(第页);
}否则{
res.status(404).send('notfound');
}
});
});
当我检查客户端日志时,我会在错误之前看到以下警告:

警告:React.createElement:类型不应为null或未定义。它应该是字符串(对于DOM元素)或ReactClass(对于复合组件)

实际错误发生在
ReactDefaultInjection
模块中的
autoGenerateWrapperClass
函数的第三行

函数自动生成包装器类(类型){
返回ReactClass.createClass({
标记名:type.toUpperCase(),
render:function(){
返回新元素(
类型,
无效的
无效的
无效的
无效的
这是道具
);
}
});
}

根据我的经验,这通常发生在我的一个组件实际为
null
未定义的
多亏了我在react router repo中打开的响应,我才能够解决问题。出于某种原因,我加载了React的两个副本,一个在版本0.13.3中,另一个在版本0.14.0中。这似乎是Browserify造成的,因为我能够通过添加到构建过程来解决这个问题。因此,我的gulp文件最终包括以下内容(将
.plugin(分辨率“*”)
行添加到两个任务中

// Compile third-party dependencies separately for faster performance.
gulp.task('browserify-vendor', function() {
    return browserify()
        .require(dependencies)
        .plugin(resolutions, '*')
        .bundle()
        .pipe(source('vendor.bundle.js'))
        .pipe(gulpif(production, streamify(uglify({ mangle: false }))))
        .pipe(gulp.dest('public/js'));
});

// Compile only project files, excluding all third-party dependencies.
gulp.task('browserify', ['browserify-vendor'], function() {
    return browserify('src/app.js')
        .external(dependencies)
        .plugin(resolutions, '*')
        .transform(babelify)
        .bundle()
        .pipe(source('bundle.js'))
        .pipe(gulpif(production, streamify(uglify({ mangle: false }))))
        .pipe(gulp.dest('public/js'));
});
一旦我加上这个,这个问题就消失了