0

我的应用程序在没有路由器的情况下工作得很好。我正在使用这个nathantreid:css-modules包,它允许你的 react 组件使用模块化 css。在我的 imports/ui/Navbar 目录中,我有 Navbar.jsx,其中包含:

// Custom Dependencies
import s from './Navbar.scss';
import NavButton from './NavButton/NavButton';

当我让应用程序加载 client/main.jsx 中的组件时,使用以下内容:

Meteor.startup(() => {
  render(<App />, document.getElementById('render-target'));
});

它可以工作,但是当我添加反应或流路由器并创建路由时它不起作用:

FlowRouter.route('/', {
  action() {
    mount(App);
  }
});

它抛出以下内容:

W20160520-10:09:25.659(-7)? (STDERR) Error: Cannot find module './Navbar.scss'
W20160520-10:09:25.659(-7)? (STDERR) at require (packages/modules-runtime/.npm/package/node_modules/install/install.js:78:1)
W20160520-10:09:25.659(-7)? (STDERR) at meteorInstall.imports.ui.Navbar.Navbar.jsx (imports/ui/Navbar/Navbar.jsx:7:1)
W20160520-10:09:25.659(-7)? (STDERR) at fileEvaluate (packages/modules-runtime/.npm/package/node_modules/install/install.js:141:1)

对于我如何解决此问题的任何技术见解,我将不胜感激。

另外我想指出,我尝试过相对路径和绝对路径,但基本问题是它只在我添加路由器时查找 NPM 包(或者至少这是我对正在发生的事情的解释)。

4

1 回答 1

0

我想出了一个解决办法!

我的基本假设可能是错误的,但我认为这与加载顺序有关。我将路由从标准 lib/ 文件夹移到了 imports/ 文件夹中,其中还有我的其他反应模块。然后我只是在我的 client/main.jsx 中导入/需要路由,它就起作用了!

于 2016-05-20T18:29:12.320 回答