2017-07-28 50 views
2

我想設置一個基本的Express應用程序與帕格使用Webpack。這是我的文件樹:使用帕格與NodeJS和Webpack

build 
    |-views 
    |-index.pug 
    |-app.js 
    |-app.js.map 
server 
    |-app.js 
package.json 
webpack.config.js 

app.js:

const express = require('express'); 
const app = express(); 
const path = require('path'); 

app.set('port', process.env.PORT || 3000); 

app.set('view engine','pug'); 
app.set('views', path.join(__dirname + 'views')); 

app.get('/',(req,res) => { 
    res.render('index'); 
}); 

var server = app.listen(app.get('port'),() => { 
    console.log('Express server is listening on port ' + server.address().port); 
}); 

webpack.config.js:

const webpack = require('webpack'); 
const path = require('path'); 
const fs = require('fs'); 

let nodeModules = {}; 
fs.readdirSync('node_modules') 
    .filter((x) => { 
    return ['.bin'].indexOf(x) === -1; 
    }) 
    .forEach((mod) => { 
    nodeModules[mod] = 'commonjs ' + mod; 
    }); 

module.exports = { 
    entry: './server/app.js', 
    target: 'node', 
    output: { 
    path: path.join(__dirname, 'build'), 
    filename: 'app.js' 
    }, 
    externals: nodeModules, 
    plugins: [ 
    new webpack.IgnorePlugin(/\.(css|less)$/), 
    new webpack.BannerPlugin({banner: 'require("source-map-support").install();', raw: true, entryOnly: false }) 
    ], 
    devtool: 'sourcemap' 
} 

是我遇到的問題是明確的應用程序可以」找到index.pug文件。當我啓動服務器,去爲localhost:3000我得到一個錯誤信息:

Error: Failed to lookup view "index" in views directory "\views" 

回答

2

path.join(__dirname + 'views')正在服務器目錄中,以便與./views或者在烏拉圭回合的WebPack配置添加此選項

node: { 
    __dirname: true, 
    __filename: true, 
}, 
更換

檢查服務器端的webpack文檔here

+1

我結束了'app.use('/',require('./ routes/main.js')使用'node:{__dirname:false,__filename:true} )); app.set('views',__dirname +'/ views');'謝謝! – SmellydogCoding