出错:无法找到模块“。”在webpackMissingModule

时间:2017-11-23 10:09:50

标签: javascript node.js express webpack pug

我正在尝试webpack一个快速应用程序,但无论我在哪里尝试检索/页面,我都遇到以下问题:

  

获取错误:找不到模块“。”在webpackMissingModule

以下是重现此内容的代码:

import express from 'express';

const app = express();
const port = 8088;

app.set('view engine', 'pug')

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

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

最初我认为这是因为pug没有包含在模块中所以我尝试在页面中添加require('pug'),但这只是将错误移动到服务器启动而不是运行时。

这是我的webpack配置:

const path = require('path');
module.exports = {
    entry: {
        index: path.join(__dirname, 'index.js')
    },
    target: 'node',
    module: {
        rules: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                include: [
                    __dirname
                ],
                exclude: /node_modules/
            }
        ]
    },
    resolve: {
        modules: [__dirname, 'node_modules']
    },
    output: {
        path: __dirname,
        filename: '[name].entry.js'
    }
}

我正在使用快递4.16,帕格2.0-rc4,webpack 3.8和babel loader 7.1

我还试图包含所有节点模块,但后来我得到了一个不同的错误(dP.f不是函数)

1 个答案:

答案 0 :(得分:1)

那是因为虽然你排除了node_modules被babel编译,但它们仍然被包含在你的包中。

您还需要忽略node_modules被包含在您的捆绑中。

安装webpack-node-externals

npm install webpack-node-externals --save-dev

并在webpack配置中添加两行。

const path = require('path');
const nodeExternals = require('webpack-node-externals'); //include this

module.exports = {
    entry: {
        index: path.join(__dirname, 'index.js')
    },
    target: 'node',
    module: {
        rules: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                include: [
                    __dirname
                ],
                exclude: /node_modules/
            }
        ]
    },
    resolve: {
        modules: [__dirname, 'node_modules']
    },
    externals: [nodeExternals()], // just add this
    output: {
        path: __dirname,
        filename: '[name].entry.js'
    }
}