我正在尝试对 express 应用程序进行 webpack,但无论我在何处尝试检索/页面,都会遇到以下问题:
Getting Error: Cannot find module "." at 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'
}
}
我正在使用 express 4.16、pug 2.0-rc4、webpack 3.8 和 babel loader 7.1
我也尝试过包含所有 Node 模块,但随后出现不同的错误(dP.f
不是函数)
最佳答案
那是因为虽然您将 node_modules
排除在 babel 编译之外,但它们仍包含在您的包中。
您还需要忽略 node_modules
被包含到您的包中。
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'
}
}
关于javascript - 获取错误 : Cannot find module "." at webpackMissingModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47452820/