我收到以下错误:
/Users/.../express/server/bundle.js:296
License: https://www.firebase.com/terms/terms-of-service.html */(function(){var h,n=this;function p(a){return void 0!==a;}function aa(){}function ba(a){a.wb=function(){return a.wf?a.wf:a.wf=new a();};}function ca(a){var b=typeof a==="undefined"?"undefined":_typeof(a);if("object"==b){if(a){if(a instanceof Array)return "array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return "object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return "array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return "function";}else return "null";}else if("function"==b&&"undefined"==typeof a.call)return "object";return b;}function da(a){return "array"==ca(a);}function ea(a){var b=ca(a);r
TypeError: Cannot read property 'navigator' of undefined
at /Users/.../server/bundle.js:296:4904
at Object.
这是我的webpack配置:
var webpack = require('webpack');
module.exports = {
entry: './server/entry.js',output: {
filename: './server/bundle.js'
},target: "node",devtool: 'source-map',resolve: {
extensions: ['','.webpack.js','.js','.json'],modulesDirectories: [
'node_modules'
]
},module: {
loaders: [
{
test: /\.json$/,exclude: '/node_modules/',loader: "json-loader"
},{
test: /\.js$/,loader: 'babel-loader',query: {
presets: ['es2015']
}
}
]
}
};
运行“node app.js”时会打印出此错误.我正在尝试使用Node和Express for Rest API运行此代码,因此正在Node.js而不是浏览器中加载.
最佳答案
您遇到的问题是因为webpack默认使用firebase package.json中指定的Firebase的“浏览器”版本,而不是“main”版本(node.js的版本). “浏览器”版本不起作用.
根据webpack configuration docs,看起来您可以通过以下方式覆盖其排序:
"resolve": { "packageMains": [ "main","webpack","browser","web","browserify",["jam","main"]] }
@H_404_13@(这是未经测试的;我只是采用默认值并先移动“main”)