如何在节点js中捆绑webpack后呈现.ejs文件并查看它?

时间:2017-04-20 23:11:51

标签: javascript node.js webpack

这是我的webpack配置:

{
    entry: './app.js',
    output: {
      path: path.resolve(__dirname, 'dist'),
      filename: "bundle.js"
    },
    module: {
      rules: [
        {
          test: /\.js$/,
          exclude: /(node_modules)/,
          use: {
            loader: 'babel-loader',
            options: {
              presets: ['env', 'es2015', 'stage-2']
            }
          }
        }
      ]
    },
    plugins: [
      new HtmlWebpackPlugin({
        template: './views/index.ejs',
        hash: true,
      })
    ],
    node: {
        __dirname: false
    },
    target: 'node'
});

这是我的服务器代码

    const express = require('express');
    const app = express();
    const path = require('path');
    const port = process.env.PORT || 3000;
    app.use(express.static(path.join(__dirname, '..', 'public')));

    app.set('views', path.join(__dirname, '..', 'views'));

    app.set('view engine', 'ejs');

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

    app.listen(port, ()=>{
      console.log(`Live on ${port}`);
    });

当我使用webpack构建它并运行它时给了我错误。我没看到index.ejs工作。我尝试过很多东西。没有什么工作。

是否可以运行输出文件并启动index.ejs?对于html文件,它的工作原理。非常感谢帮助!

1 个答案:

答案 0 :(得分:2)

设置视图引擎后添加此行,这应该可以解决问题..

app.set("view engine", "ejs");   
app.engine('.ejs', ejs);  // <-- this one

显然,这是webpack中的一个错误的结果,问题是already opened