我正在创建要绑定的节点/表达服务器,以便可以将其部署到IIS服务器上。我应该注意,这只是一个后端服务器。捆绑后尝试运行代码后,出现以下错误:
ReferenceError: __WEBPACK_EXTERNAL_MODULE_dotenv__ is not defined
at eval (webpack:///external_%22dotenv%22?:1:18)
at Object.dotenv (C:\inetpub\wwwroot\my-deployments\server\bundle.js:271:1)
at __webpack_require__ (C:\inetpub\wwwroot\my-deployments\server\bundle.js:20:30)
at eval (webpack:///./src/server/server.js?:4:1)
at Object../src/server/server.js (C:\inetpub\wwwroot\my-deployments\server\bundle.js:169:1)
at __webpack_require__ (C:\inetpub\wwwroot\my-deployments\server\bundle.js:20:30)
at eval (webpack:///multi_./src/server/server.js?:1:18)
at Object.0 (C:\inetpub\wwwroot\my-deployments\server\bundle.js:216:1)
at __webpack_require__ (C:\inetpub\wwwroot\my-deployments\server\bundle.js:20:30)
at C:\inetpub\wwwroot\my-deployments\server\bundle.js:84:18
我了解到dotenv模块似乎存在错误,但是我尝试了仅安装了express的基本应用程序,但遇到了相同的错误,但是使用express而不是dotenv。我认为这是我的webpack.config.js的问题,但我似乎无法弄清楚是什么原因导致了此问题。
webpack.config.js
const path = require('path')
const webpack = require('webpack')
const nodeExternals = require('webpack-node-externals')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
module.exports = {
target: 'node',
mode: 'development',
entry: {
bundle: ["./src/server/server.js"]
},
externals: [nodeExternals({
importType: 'umd'
})],
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
title: 'server'
})
],
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
}
}
答案 0 :(得分:0)
问题出在您的nodeExternals
选项中。删除importType: 'umd'
并重新捆绑。我使用一个小型express
应用和您的确切配置在本地进行了测试,并且对我有用。
这里的问题是,您告诉webpack 所有,您的导入是“外部的”(未捆绑),并且它们使用umd
(通用模块定义)来公开其内容
Umd通常用于客户端代码,因此它将在多种不同的环境(<script>
标签,commonjs,amd,es6模块等)中运行。至于服务器端/仅Nodejs的模块……不多。 importType
的{{3}}是commonjs
,它是Node的本机模块加载系统,并且将使用绝大多数服务器端程序包。