node.js - 将 Pug 与 NodeJS 和 Webpack 结合使用

标签 node.js express webpack pug-loader

我正在尝试使用 Webpack 与 Pug 设置一个基本的 Express 应用程序。这是我的文件树:

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'
}

我遇到的问题是 Express 应用程序找不到 index.pug 文件。当我启动服务器并转到 localhost:3000 时,我收到一条错误消息:

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

最佳答案

path.join(__dirname + 'views') 正在查看服务器目录内部,因此将其替换为 ./views 或者在你的 webpack 配置中添加此选项

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

查看服务器端的 webpack 文档 here

关于node.js - 将 Pug 与 NodeJS 和 Webpack 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45379750/

相关文章:

node.js - node-express 如何在 URL 查询字符串中传递 DATE 参数以及如何解析它

jquery - ExpressJS + jsdom — 范围问题

Webpack 3 不排除 node_modules

webpack - 无法使用 node 12.0.0-pre 和 npm 6.6.0 OSX 安装 Webpack

javascript - 如何将每个外部和内联 JS 脚本 bundle 在 HTML 文件中

javascript - Socket IO - NodeJS 需要外部脚本吗?

debugging - 在 Jade 源中打开换行符?

node.js - 使用额外的列进行多对多的序列化

node.js - 使用 Express Node 设置响应 header

javascript - Sequelize - 将新行添加到表并关联表