2017-07-07 100 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來查找我的問題。