带有节点和Webpack的Firebase无法正常工作 – 无法读取未定义的属性“导航器”

我收到以下错误:

/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.<anonymous> (/Users/.../server/bundle.js:296:143270) at __webpack_require__ (/Users/.../server/bundle.js:20:30) at Object._typeof (/Users/.../server/bundle.js:239:18) at __webpack_require__ (/Users/.../server/bundle.js:20:30) at Object.i (/Users/.../server/bundle.js:52:14) at __webpack_require__ (/Users/.../server/bundle.js:20:30) at /Users/.../server/bundle.js:40:18 at Object.<anonymous> (/Users/.../server/bundle.js:43:10) at Module._compile (module.js:435:26) 

这是我的webpackconfiguration:

 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$/, exclude: '/node_modules/', loader: 'babel-loader', query: { presets: ['es2015'] } } ] } }; 

当我运行“节点app.js”时,打印出这个错误。 我试图使用Node和Express for Rest API来运行此代码,因此正在Node.js中加载,而不是浏览器。

您遇到的问题是因为webpack将默认使用firebase package.json中指定的Firebase的“浏览器”版本,而不是“main”版本(这是node.js的版本)中指定的版本。 “浏览器”版本将不起作用。

根据webpack的configuration文档 ,看起来你可能可以用类似的方式来覆盖它的sorting:

 "resolve": { "packageMains": [ "main", "webpack", "browser", "web", "browserify", ["jam", "main"]] } 

(这是未经testing的;我只是采取了默认,并首先移动“主”)

Interesting Posts