出现错误:找不到模块“。”在 webpackMissingModule
Posted
技术标签:
【中文标题】出现错误:找不到模块“。”在 webpackMissingModule【英文标题】:Getting Error: Cannot find module "." at webpackMissingModule 【发布时间】:2018-05-07 06:16:30 【问题描述】:我正在尝试 webpack 一个 express 应用程序,但无论我在哪里尝试检索 / 页面,都会遇到以下问题:
这是重现此内容的代码:
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
我也尝试包含所有节点模块,但随后出现不同的错误(dP.f
不是函数)
【问题讨论】:
【参考方案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'
【讨论】:
这行得通,但它可能并不理想,因为我将无法直接部署捆绑包,而是还需要在生产环境中安装所有模块。但是,我可能可以摆弄一个白名单来满足我的需要以上是关于出现错误:找不到模块“。”在 webpackMissingModule的主要内容,如果未能解决你的问题,请参考以下文章
无法在 AWS/nodejs 上运行自定义模块。退出并出现错误:找不到模块
出现错误,错误:npm install 后找不到模块“express”