React找不到导出的renderRoutes函数

时间:2019-06-02 20:43:29

标签: reactjs meteor react-router

我正在开发我的第一个流星/反应应用程序,并且正在尝试使用react-router。但是,当我尝试运行该应用程序时,似乎无法导入renderRoutes函数。

我尝试在此处跟随路由器部分:

https://guide.meteor.com/react.html

路由器位于myapp/client/lib/router.js中。这是我的路由器代码:

import React from 'react';
import { Router, Route, Switch } from 'react-router';
import createBrowserHistory from 'history/createBrowserHistory';

import {Home} from '../home/home.js';
import {Login} from '../login/login.js';
import {Connect} from '../connect/connect.js';

const browserHistory = createBrowserHistory();

export const renderRoutes = () => (
  <Router history={browserHistory}>
    <Switch>
      <Route exact path="/" component={Home}/>
      <Route exact path="/login" component={Login}/>
      <Route exact path="/connect" component={Connect}/>
    </Switch>
  </Router>
);

我在myapp/server/main.js中有一个meteor.startup()函数,这是我在那里的全部内容:

import { Meteor } from 'meteor/meteor';
import { render } from 'react-dom';
import { renderRoutes } from '../client/lib/router.js';

Meteor.startup(() => {
  render(renderRoutes(), document.getElementById('App'));
});

当我尝试运行meteor run时,会看到以下信息:

Error: Cannot find module '../client/lib/router.js'

为什么?任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

这是因为您的路由器位于

myapp / 客户端 /lib/router.js

主文件位于

myapp / 服务器 /main.js

因此,除非您打算实现服务器端渲染,否则可以将第二个代码移至

myapp / 客户端 /main.js

这是由于Meteor对项目结构的了解。如果文件包含在名为clientserver的文件夹中,则该文件仅在此环境中可用。

要在指南中阅读的更多内容:https://guide.meteor.com/structure.html#special-directories