鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ koa-views index.html 訪問404

koa-views index.html 訪問404

我用koa做react項目的服務(wù)器端,碰到一個很奇怪的問題

import 'babel-polyfill'
import serve from 'koa-static'
import path from 'path'
import views from 'koa-views'
import app from './app'
import router from './routes'

app.use(views(path.resolve(__dirname,'../build/views/prod'), {map: {html: 'ejs'}}))
app.use(serve(path.resolve(__dirname, '../build/client')))

這個是編譯環(huán)境的代碼,當(dāng)這樣的時候訪問是404

clipboard.png

我的目錄結(jié)構(gòu)是這樣的

clipboard.png

而如果我把上面的代碼修改一下

app.use(views(path.resolve(__dirname,'../build/client'), {map: {html: 'ejs'}}))
app.use(serve(path.resolve(__dirname, '../build/client')))

index.html文件打包到client文件夾中,再訪問的時候,可以訪問到文件,但是出現(xiàn)js錯誤

clipboard.png

請大神幫忙看看是怎么回事,萬分感謝!~~

回答
編輯回答
傲寒

我終于解決了,因為我用的webpack@3 進(jìn)行打包的,以前demo是用webpack@1做的,我在react-router加載組件的時候是按需加載的,也就是require.ensure
編譯后兩個版本的不一樣

//webpack@1打包結(jié)果
var home = function home(nextState, callback) {
        __webpack_require__.e/* nsure */(1, function (require) {
            callback(null, __webpack_require__(98));
        });
    };

//webpack@3打包結(jié)果
var Home = function Home(nextState, callback) {
    new Promise(function(resolve) { resolve(); }).then((function (require) {
        callback(null, __webpack_require__(157));
    }).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
};

我遂取掉了require.ensure,再次build,執(zhí)行,程序正常了(心碎了,這個問題折騰了三天時間,后續(xù)還得解決webpack@3里面按需加載的問題。。。。)

2017年8月4日 07:53