我正在使用Webpack
使用ExtractTextPlugin
插件构建我们的项目,以将CSS分成单独的文件。它适用于项目中的大多数CSS / LESS / SASS文件,除了一个属于第三方库的vendor.css文件。只要我将此文件包含到我的项目中,我就会收到 ReferenceError:window is not defined 错误消息。如果我不使用ExtractTextPlugin
,则不会显示错误消息。
我的 webpack.config.js 部分LESS配置如下(完整文件为here):
new ExtractTextPlugin(__dirname + '/Content/js/styles/styles.css'),
...
module: {
{
test: /\.less$/,
loader: ExtractTextPlugin.extract(
'style-loader',
'css-loader!' +
'autoprefixer-loader!' +
'less-loader'
)
}
}
完整错误消息输出为here。
以下是我导入此特定LESS
文件的工作流程:
需要 styles.js 文件,该文件需要 vendor.less 文件,该文件需要来自Bower目录中第三方库的CSS。
styles.js :
require('../../../less/vendor.less');
vendor.less :
@import (css) "~vendor-ui-bootstrap/dist/css/arena.css";
arena.css 包含已编译的CSS。
答案 0 :(得分:1)
我能够解决这个问题。问题出在webpack.config.js
文件中我在alias
部分中有'jquery'引用:
<强> webpack.config.js 强>:
new webpack.ProvidePlugin({
'_': 'underscore',
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery'
}),
...
alias: {
//'jquery': 'jquery/jquery', - no need to have as I'm using the plugin
'jquery-bbq': 'jquery-bbq/jquery.ba-bbq',
'jquery.cookie': 'jquery.cookie/jquery.cookie',
'jquery.chosen': 'chosen/chosen.jquery.min',
'jquery.colorpicker': 'jQuery-ColorPicker/colorpicker',
'jquery.fileupload': 'blueimp-file-upload/js/jquery.fileupload',
'jquery.scrollTo': 'jquery.scrollto/jquery.scrollTo',
'jquery.tagsinput': 'jquery-tags-input/src/jquery.tagsinput',
'jquery.tablednd': 'TableDnD/js/jquery.tablednd',
'jquery.ui': 'jquery-ui/jquery-ui',
'jquery.ui.widget': 'blueimp-file-upload/js/vendor/jquery.ui.widget',
'jquery.validate': 'jquery-validation/dist/jquery.validate',
'json2': 'JSON-js/json2'
},
删除引用后,构建过程成功。
答案 1 :(得分:0)
我也有这个问题。我没有使用jquery,但是其他一些软件包正在使用window
,这使Jasmine puke成为可能。我无法修改程序包,所以我定义了窗口。
在文件jasmine.json
中放入
"helpers": [ "helper.js" ],
并在文件helper.js
中放入
console.log('===============================');
console.log('===== BEGIN UNIT TEST =====');
console.log('===============================');
global.window = {};
现在问题已解决。