Webpack生产构建失败:“无法解析'aws-sdk'”

3
我正在使用TypeScript编写一个Express应用程序,并尝试使用webpack将生产代码和供应商模块转换为单个bundle.js文件。但是,由于出现了奇怪的node-pre-gyp错误,我无法这样做:
模块未找到:错误:无法在'[...]/harema-api/node_modules/bcrypt/node_modules/node-pre-gyp/lib'中解析'aws-sdk'
我正在运行node 8.11.2。这是我的webpack.config.js
const path = require('path');
module.exports = { entry: './src/index.ts', target: 'node', mode: 'production', devtool: 'inline-source-map', module: { rules: [ { test: /\.tsx?$/, use: 'ts-loader' } ] }, resolve: { extensions: [ '.tsx', '.ts', '.js' ] }, output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } };
有什么想法吗?谢谢您提前。

在我的情况下,问题是通过切换到“bcryptjs”包而不是“bcrypt”解决的。速度略慢,但它可以工作。 - Oscar Saraza
2个回答

3

我添加了这个包,错误已消失,但是它将4.5MB (!)添加到我的软件包中。

删除整个“node_modules”文件夹并执行“npm install”可以解决这个问题。


2
如果你仍然遇到这个问题,我建议在webpack命令中显式指定--config,而不是将配置文件作为第一个参数或省略它。
之前:webpack ./webpack.config.js --mode production // 错误:无法解析...
之后:webpack --config ./webpack.config.js --mode production 我承认我不确定为什么这样做可以解决问题,因为对于我的情况来说,两种方法都会读取配置文件。我使用的是webpack v4.16.2和webpack-cli v3.1.0。

我切换到它后,错误消失了。虽然看起来是一个胜利,但在构建文件中查看,发现这是转译过的webpack.config.js。因此并不是一个解决方案。 - Dmitry Istomin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接