2016-05-23 8 views
3

Ich baue gerade eine App und versuche, die Produktionsserverumgebung zu testen, die ich mit Express erstellt habe. Die Anwendung funktioniert einwandfrei, wenn sie über webpack-dev-server bedient wird, aber wenn mein Express server.js von webpack gebündelt wird und node server.bundle.js ausgeführt wird, erhalte ich den folgenden Fehler bezüglich Firebase-Speicher.Firebase-Speicher Funktioniert nicht in Express Server-Umgebung

/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:533 
    var storage = _firebaseConfig2.default.storage(); 
             ^

TypeError: _firebaseConfig2.default.storage is not a function 

Node landet nur zum Wechseln meiner Dev-Umgebung.

Im Folgenden sind meine package.json enthält meine Abhängigkeiten und Npm Skripts gefolgt von dem Protokoll von meinem Terminal.

Alle google/stackoverflow Suche, die ich auf "_firefaseConfig2.default.storage" vorgenommen habe, ist keine Funktion ', die fast nichts ergab.

Package.json

{ 
    "name": "mtbparks-member-app", 
    "version": "0.1.0", 
    "main": "index.html", 
    "scripts": { 
    "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", 
    "start:dev": "webpack-dev-server --inline --content-base build/ --history-api-fallback && postcss --use autoprefixer -d build src/styles.css", 
    "start:prod": "npm run build && node server.bundle.js", 
    "build:client": "webpack && postcss --use autoprefixer -d build src/styles.css", 
    "build:server": "webpack --config webpack.server.config.js", 
    "build": "npm run build:client && npm run build:server", 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "license": "ISC", 
    "devDependencies": { 
    "autoprefixer": "^6.3.6", 
    "babel-core": "^6.8.0", 
    "babel-loader": "^6.2.4", 
    "babel-polyfill": "^6.9.0", 
    "babel-preset-es2015": "^6.6.0", 
    "babel-preset-react": "^6.5.0", 
    "eslint": "^2.9.0", 
    "eslint-loader": "^1.3.0", 
    "eslint-plugin-react": "^5.1.1", 
    "http-server": "^0.9.0", 
    "postcss-cli": "^2.5.2", 
    "postcss-loader": "^0.9.1", 
    "webpack": "^1.13.0", 
    "webpack-dev-server": "^1.14.1" 
    }, 
    "dependencies": { 
    "compression": "^1.6.2", 
    "express": "^4.13.4", 
    "firebase": "3.0.2", 
    "foundation-sites": "^6.2.1", 
    "if-env": "^1.0.0", 
    "re-base": "^1.5.1", 
    "react": "^15.0.2", 
    "react-dom": "^15.0.2", 
    "react-router": "^2.4.0" 
    } 
} 

Logs

=> NODE_ENV=production npm start 

> [email protected] start /Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp 
> if-env NODE_ENV=production && npm run start:prod || npm run start:dev 


> [email protected] start:prod /Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp 
> npm run build && node server.bundle.js 


> [email protected] build /Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp 
> npm run build:client && npm run build:server 


> [email protected] build:client /Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp 
> webpack && postcss --use autoprefixer -d build src/styles.css 

Hash: cf9ca8bbc1315fc1c9db 
Version: webpack 1.13.0 
Time: 14624ms 
     Asset  Size Chunks    Chunk Names 
    bundle.js 855 kB  0 [emitted] main 
bundle.js.map 4.59 MB  0 [emitted] main 
    [0] multi main 40 bytes {0} [built] 
    + 538 hidden modules 

> [email protected] build:server /Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp 
> webpack --config webpack.server.config.js 

Hash: 4561926734ef8e1e5a47 
Version: webpack 1.13.0 
Time: 973ms 
      Asset  Size Chunks    Chunk Names 
server.bundle.js 27.6 kB  0 [emitted] main 
    [0] multi main 40 bytes {0} [built] 
    + 17 hidden modules 
/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:533 
    var storage = _firebaseConfig2.default.storage(); 
             ^

TypeError: _firebaseConfig2.default.storage is not a function 
    at Object.defineProperty.value (/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:533:41) 
    at __webpack_require__ (/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:20:30) 
    at Object.defineProperty.value (/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:179:14) 
    at __webpack_require__ (/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:20:30) 
    at Object.<anonymous> (/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:83:16) 
    at Object.<anonymous> (/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:121:31) 
    at __webpack_require__ (/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:20:30) 
    at Object.<anonymous> (/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:48:19) 
    at __webpack_require__ (/Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:20:30) 
    at /Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/server.bundle.js:40:18 

npm ERR! Darwin 14.5.0 
npm ERR! argv "/Users/palcisto/.nvm/versions/node/v5.11.1/bin/node" "/Users/palcisto/.nvm/versions/node/v5.11.1/bin/npm" "run" "start:prod" 
npm ERR! node v5.11.1 
npm ERR! npm v3.8.6 
npm ERR! code ELIFECYCLE 
npm ERR! [email protected] start:prod: `npm run build && node server.bundle.js` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] start:prod script 'npm run build && node server.bundle.js'. 
npm ERR! Make sure you have the latest version of node.js and npm installed. 
npm ERR! If you do, this is most likely a problem with the mtbparks-member-app package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  npm run build && node server.bundle.js 
npm ERR! You can get information on how to open an issue for this project with: 
npm ERR!  npm bugs mtbparks-member-app 
npm ERR! Or if that isn't available, you can get their info via: 
npm ERR!  npm owner ls mtbparks-member-app 
npm ERR! There is likely additional logging output above. 

npm ERR! Please include the following file with any support request: 
npm ERR!  /Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/npm-debug.log 

> [email protected] start:dev /Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp 
> webpack-dev-server --inline --content-base build/ --history-api-fallback && postcss --use autoprefixer -d build src/styles.css 

http://localhost:8080/ 
webpack result is served from/
content is served from /Users/palcisto/Sites/sandbox/MTBparks/MTBparksMemberApp/build 
404s will fallback to /index.html 
Hash: e38d4972b9458e39b46c 
Version: webpack 1.13.0 
Time: 16461ms 
     Asset  Size Chunks    Chunk Names 
    bundle.js 928 kB  0 [emitted] main 
bundle.js.map 5.17 MB  0 [emitted] main 

Antwort

5

Firebase Speicher dev hier:

Firebase Storage ist derzeit nur Browser JS. Da Google Cloud Storage bereits eine Reihe von qualitativ hochwertigen Client-Bibliotheken zur Verfügung stellt, wollten wir keine andere neu implementieren - wir empfehlen die Verwendung der GCloud-Node-Bibliothek für diese Art der Entwicklung. Sie können dies mit Ihrem vorhandenen Speicher-Bucket und den typischen Entwicklungs-Setup-Anweisungen Firebase Server verwenden.

+0

Vielen Dank Mike. Eine Frage für Sie dann. Da ich die Browser-Version in meinem Hauptpaket "bundle.js" verwende, das all meine "react app JS" enthält, dachte ich, es würde funktionieren. Könnte es sein, weil ich den React-Code-Server-Seite mit Express rendern, dass es nicht mehr als Browser JS behandelt wird? Ich bin sehr neu bei Webpack, Express, React und sogar Firebase (gerade erst letzte Woche gestartet (Ende)). – CSSDevMonkey

+1

Das ist ziemlich verwirrend, die NodeJS-API sollte mit der Browser-API wie die Datenbank-API übereinstimmen. – jujule

+1

Ich stimme zu, dass die unterschiedlichen APIs etwas verwirrend sind, und wir untersuchen Optionen, um sie in Zukunft ähnlicher zu machen. –

1

Zustimmen, dies scheint gegen den gesamten Zweck von Firebase zu sein. Auf der einen Seite sagt der offizielle Doco an einigen Stellen "... für einige Features von Firebase Node.JS ist erforderlich ..." (oder ähnlich) und dennoch können wir in diesem Fall Node.JS nicht verwenden.

Verwandte Themen