2017-07-07 57 views
1

我正在尝试开发一个使用流星和Heroku的webapp。当我运行我的代码在本地一切都很好,但是当我部署在Heroku上,我得到:Heroku找不到任何模块

找不到模块” ./navbar/NavBar.js'

,或者如果我

找不到模块 './component/App'

我的项目文件夹的样子:

得到我的代码摆脱的NavBar的
project 
    client 
    main.css 
    main.html 
    main.js 
     component 
     App.js 
     Games.js 
     Home.js 
     Workbench.js 
     navbar 
      NavBar.js 

    Server 
    main.js 

这是我的代码:

main.js

import React from 'react'; 
import { Meteor } from 'meteor/meteor'; 
import { render } from 'react-dom'; 

import App from './component/App'; 

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

}); 

App.js

import React from 'react'; 
import {Container} from 'reactstrap'; 
import {BrowserRouter as Router, Route} from 'react-router-dom'; 

import Workbench from './Workbench' 
import NavBar from './navbar/NavBar.js' 

export default class App extends React.Component { 
    render(){ 
    return(
     <Router> 
     <div> 
     <NavBar/> 
      <Container fluid={true}> 
      <Route path='/' component={Workbench}/> 
      </Container> 
     </div> 
     </Router> 
    ) 
    } 
} 

NavBar.js

import React from 'react'; 
import {nav} from 'react-bootstrap'; 

export default class NavBar extends React.Component { 

    constructor(props){ 
    super(props); 
    this.state = { 
     gameList: [{}], 
     gamesVisibility: false 
    } 
    } 
    render() { 
    const {gameList, gameVisibility} = this.state; 

    return (
     <div className="sidenav"> 
      <h2 className="sidenav-header"><a href="/">Test project</a></h2> 
      <ul> 
      <li onClick={() => this.setState({gameVisibility: !gameVisibility})}> <a className="SideNavTitle">Games</a> {this.renderArrow(gameVisibility)} </li> 
       {this.renderCollection(gameVisibility, gameList)} 
      <li className="SideNavItem"><a>Channel</a></li> 
      <li className="SideNavItem"><a>About</a></li> 
      </ul> 
     </div> 
    ); 
    } 

    renderCollection(visibility, collection){ 
     if (visibility){ 
      return collection.map((game) => <li id = 'test' className="SideNavSubItem"><a>{game.name}</a></li>) 
     } 
     else{ 
     return; 
     } 
    } 

    renderArrow(visibility){ 
    if (visibility){ 
     return <i className="fa fa-arrow-down" aria-hidden="true" style={{color: 'white'}}/> 
    } 
    else{ 
     return <i className="fa fa-arrow-right" aria-hidden="true" style={{color: 'white'}}/> 
    } 
    } 

} 

我用heroku run bash以及cat NavBar.js以确认我的文件位于heroku上,如this后的建议。它的一种奇怪,因为代码在本地完美工作

编辑:在Heroku上的构建是成功的,这些错误显示,当我尝试加载我的网页。

+0

您使用哪种Heroku buildpack来部署您的Meteor项目? – ghybs

+0

我按照这个教程:https://medium.com/@leonardykris/how-to-run-a-meteor-js-application-on-heroku-in-10-steps-7aceb12de234 所以我的buildpack是:https://github.com/AdmitHub/meteor-buildpack-horse.git –

回答

-1

我假设您的项目文件夹包含三个子文件夹(客户端,组件,服务器)。在您的main.js文件中使用:

import App from '../component/App'

使用的是单 “”它搜索服务器文件夹中的组件文件夹。 你需要用双“”回溯。“

+0

请不要忘记提出答案。 –

+0

问题是否保持不变? @Gleyak iHope –

+0

我有2个子文件夹(客户端和服务器)组件是客户端的子文件夹。我仍然试过你的解决方案,因为我很迷茫,一切只能帮助,但它没有奏效。正如我所说的,我的项目在当地完美工作,所以我很确定我的代码是正常的。谢谢你尝试寿! :) –

0

通过一些搜索,我发现在heroku上,我有一个组件文件夹和一个组件文件夹。不知道为什么,因为我的流星项目中只有1个文件夹组件。使用heroku run bash来查找我的问题。