JSC_NON_GLOBAL_DEFINE_INIT_ERROR:
环境
以下是错误消息:
ERROR in app.bundle.js:5325 (JSC_NON_GLOBAL_DEFINE_INIT_ERROR) @define variable assignment must be global
使用如下的webpack.config.js:
module.exports = {
plugins: [
new ClosureCompiler({
options: {
languageIn: 'ECMASCRIPT6',
languageOut: 'ECMASCRIPT3',
compilationLevel: 'SIMPLE_OPTIMIZATIONS',
warningLevel: 'QUIET'
}
})
]
此错误是由firebase/utils/constants.js内的@define
注释引起的。
var CONSTANTS = exports.CONSTANTS = {
/**
* @define {boolean} Whether this is the client Node.js SDK.
*/
NODE_CLIENT: false,
/**
* @define {boolean} Whether this is the Admin Node.js SDK.
*/
NODE_ADMIN: false,
/**
* Firebase SDK Version
*/
SDK_VERSION: '4.3.1'
};
我不确定Firebase
使用@define
注释的原因,但我决定使用UglifyjsWebpackPlugin作为暂定措施。
module.exports = {
plugins: [
new UglifyJSPlugin({
output: {
comments: false
}
}),
new ClosureCompiler({
options: {
languageIn: 'ECMASCRIPT6',
languageOut: 'ECMASCRIPT3',
compilationLevel: 'SIMPLE_OPTIMIZATIONS',
warningLevel: 'QUIET'
}
})
]
幸运的是UglifyjsWebpackPlugin似乎解决了这个问题。
我的问题是,
答案 0 :(得分:0)
@define
注释必须是全局的。在webpack中,一切都是模块,因此它不是全局的。
最佳选择可能是编写一个删除该注释的自定义加载程序。