2017-08-30 95 views
0

我正在開發一個帶有vuejs的應用程序,並使用vue-route進行路由。 我創建了一個route.js爲:Vue路由在開發服務器上正常工作,但不能在生產中工作

import Vue from 'vue' 
import VueRouter from 'vue-router' 
import Content from './components/Content.vue' 

Vue.use(VueRouter) 

const router = new VueRouter({ 
mode: 'history', 
routes: [ 
    { 
     path: '/', 
     component: Home, 
     meta: { 
      forVisitors: true, 
      title: 'Univibe Plus', 
     } 
    }, 
    { 
     path: '/content', 
     component: Content, 
     meta: { 
      forVisitors: true, 
      title: 'Content', 
     } 
    } 
] 
}) 

export default router 

上運行sudo npm run dev路由工作正常,但是當我創建使用sudo npm run build/網頁製作應用程序工作,/content頁不能正常工作,並給予錯誤「不能讓網頁/內容」。請在這裏幫助我。

+0

你有沒有試過*哈希模式*而不是*歷史模式*? – choasia

+0

但是,如果我需要使用它沒有散列,那麼我該怎麼辦? –

+0

所以它適用於散列模式?如果是這樣,則錯誤可能是由服務器配置引起的。 – choasia

回答

0

我得到了這個問題的解決方案。 從我的項目的根目錄中安裝快車(當然,它已經安裝了,但其實只是添加此作爲一個依賴):

npm install --save express 

安裝連接歷史,回退API作爲一個依賴:

npm install --save connect-history-api-fallback 

在項目的根目錄下創建一個server.js文件。 (請參見下面的腳本)。

更新的package.json啓動腳本,現在將使用表達,而不是服務:

"start": "node server.js" 

然後,我改變了我的server.js爲:

// server.js 

const express = require('express') 
const path = require('path') 
const history = require('connect-history-api-fallback') 
//^middleware to redirect all URLs to index.html 

const app = express() 
const staticFileMiddleware = express.static(path.join(__dirname)) 

app.use(staticFileMiddleware) 
app.use(history()) 
app.use(staticFileMiddleware) 

app.get('/', function (req, res) { 
    res.render(path.join(__dirname + '/index.html')) 
}) 

app.listen(5000, function() { 
    console.log('Express serving on 5000!') 
}) 

爲這個配置你的routes.js文件中應該有mode: 'history'

相關問題