我正在使用webpack
将JavaScript打包为库。该库用于两种情况,一种是在浏览器内部,另一种是在nodejs应用程序中使用。下面是我的webpack配置:
output: {
filename: '[name].js',
sourceMapFilename: '[name].map',
path: outputPath,
publicPath: '/',
library: 'MyLib',
libraryExport: "default" ,
libraryTarget: 'umd'
},
对于浏览器来说,用户可以通过html <script>
标签引用它,如下所示:
<script src="https://myhost/mylib.js">
然后在全球范围内可以使用名称MyLib
。我相信这是通过在MyLib
对象上添加window
来完成的。
当我在nodejs应用程序中使用我的库时,问题就来了。我会收到window is not defined
错误。我认为这是因为webpack在window
对象上添加了我的库,而该对象在nodejs环境中不存在。我想知道如何在不破坏浏览器用户的情况下解决此问题。我是否真的需要发布两个版本的javascript
,一个用于浏览器,另一个用于nodejs?
答案 0 :(得分:0)
我希望这会对您有所帮助。
output: {
filename: '[name].js',
sourceMapFilename: '[name].map',
path: outputPath,
publicPath: '/',
library: 'MyLib',
libraryExport: "default" ,
libraryTarget: 'umd',
globalObject: 'typeof self !== \'undefined\' ? self : this'
},