在部署过程中,我正在使用webpack将许多后端脚本捆绑到一个文件中。
连接到MongoDB数据库时,存在一个可选的依赖项,如果不包含该依赖项,则会引发警告。
Warning: no saslprep library specified. Passwords will not be sanitized
在我的开发环境中,通过安装可选依赖项可以轻松解决此错误。
npm install saslprep --save
但是,当与webpack捆绑在一起时,不包括可选的依赖项,并且警告在生产部署中仍然存在。我可以很容易地找到造成这种情况的原因,mongodb库要求将此作为可选的依赖项:
let saslprep;
try {
saslprep = require('saslprep');
} catch (e) {
// don't do anything;
}
我曾尝试使用垫片,外部工具,插件来遵循webpack文档,但坦率地说,对于解决此问题的正确方法,它已经一去不复返了。这是我当前的webpack.config文件(试图将此作为插件)。
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './src/api/index.ts',target: 'node',mode: 'production',module: {
rules: [
{
test: /\.tsx?$/,loader: 'ts-loader',exclude: /node_modules/
}
]
},resolve: {
extensions: ['.js','.tsx','.ts','.json']
},output: {
filename: 'api.js',path: path.resolve(__dirname,'dist'),},plugins: [
new webpack.IgnorePlugin(/fsevents/),new webpack.IgnorePlugin(/blessed/),new webpack.ProvidePlugin({
saslprep: path.resolve(__dirname,"node_modules/saslprep/index.js")
})
],};
谢谢。