> firebase --version
3.17.1
> node --version
v6.12.3
> npm --version
5.6.0
> git clone https://github.com/firebase/functions-samples.git
> cd functions-samples/authenticated-json-api/functions/
> npm install
> [email protected] install /Users/karl/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/grpc
> node-pre-gyp install --fallback-to-build --library=static_library
[grpc] Success: "/Users/karl/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/grpc/src/node/extension_binary/node-v48-darwin-x64-unknown/grpc_node.node" is installed via remote
> [email protected] postinstall /Users/karl/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/protobufjs
> node scripts/postinstall
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] requires a peer of firebase-admin@~4.2.1 but none is installed. You must install peer dependencies yourself.
added 354 packages in 11.832s
> firebase use my-project
Now using project my-project
> firebase serve --only functions
=== Serving from '/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api'...
i functions: Preparing to emulate functions.
â functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
â functions: Error from emulator. FirebaseError: Error occurred while parsing your function triggers. Please ensure you have the latest firebase-functions SDK by running "npm i --save firebase-functions@latest" inside your functions folder.
Error: Firebase config variables are not available. Please use the latest version of the Firebase CLI to deploy this function.
at init (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/firebase-functions/lib/config.js:51:15)
at Object.config (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/firebase-functions/lib/config.js:29:9)
at Object.<anonymous> (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/index.js:27:31)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
> firebase serve --only functions --debug
[2018-01-19T03:30:49.455Z] ----------------------------------------------------------------------
[2018-01-19T03:30:49.459Z] Command: /usr/local/Cellar/node@6/6.12.3/bin/node /usr/local/bin/firebase serve --only functions --debug
[2018-01-19T03:30:49.460Z] CLI Version: 3.17.1
[2018-01-19T03:30:49.460Z] Platform: darwin
[2018-01-19T03:30:49.460Z] Node Version: v6.12.3
[2018-01-19T03:30:49.460Z] Time: Thu Jan 18 2018 22:30:49 GMT-0500 (EST)
[2018-01-19T03:30:49.461Z] ----------------------------------------------------------------------
[2018-01-19T03:30:49.476Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[2018-01-19T03:30:49.476Z] > authorizing via signed-in user
[2018-01-19T03:30:49.479Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/projects/my-project
Thu Jan 18 2018 22:30:49 GMT-0500 (EST)
[2018-01-19T03:30:49.855Z] <<< HTTP RESPONSE 200 server=nginx, date=Fri, 19 Jan 2018 03:30:49 GMT, content-type=application/json; charset=utf-8, content-length=126, connection=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store
[2018-01-19T03:30:49.856Z] >>> HTTP REQUEST GET https://admin.firebase.com/v1/database/my-project/tokens
Thu Jan 18 2018 22:30:49 GMT-0500 (EST)
[2018-01-19T03:30:50.482Z] <<< HTTP RESPONSE 200 server=nginx, date=Fri, 19 Jan 2018 03:30:50 GMT, content-type=application/json; charset=utf-8, content-length=267, connection=close, x-content-type-options=nosniff, strict-transport-security=max-age=31536000; includeSubdomains, cache-control=no-cache, no-store
=== Serving from '/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api'...
i functions: Preparing to emulate functions.
[2018-01-19T03:30:51.081Z] Fetching environment
[2018-01-19T03:30:51.082Z] >>> HTTP REQUEST GET https://appengine.googleapis.com/v1/apps/my-project
Thu Jan 18 2018 22:30:51 GMT-0500 (EST)
[2018-01-19T03:30:51.083Z] >>> HTTP REQUEST GET https://apikeys.googleapis.com/v1/projects/my-project/apiKeys
Thu Jan 18 2018 22:30:51 GMT-0500 (EST)
[2018-01-19T03:30:51.569Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 19 Jan 2018 03:30:51 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2018-01-19T03:30:51.663Z] <<< HTTP RESPONSE 200 content-type=application/json; charset=UTF-8, vary=X-Origin, Referer, Origin,Accept-Encoding, date=Fri, 19 Jan 2018 03:30:51 GMT, server=ESF, cache-control=private, x-xss-protection=1; mode=block, x-frame-options=SAMEORIGIN, x-content-type-options=nosniff, alt-svc=hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35", accept-ranges=none, connection=close
[2018-01-19T03:30:51.664Z] Starting @google-cloud/functions-emulator
[2018-01-19T03:30:53.220Z] Parsing function triggers
â functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
â functions: Error from emulator. FirebaseError: Error occurred while parsing your function triggers. Please ensure you have the latest firebase-functions SDK by running "npm i --save firebase-functions@latest" inside your functions folder.
Error: Firebase config variables are not available. Please use the latest version of the Firebase CLI to deploy this function.
at init (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/firebase-functions/lib/config.js:51:15)
at Object.config (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/node_modules/firebase-functions/lib/config.js:29:9)
at Object.<anonymous> (/Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/index.js:27:31)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
ä»ã®ãããžã§ã¯ãã§ã¯firebase serve --only functions
ãããªãŒãºããä»ã®ãµã³ãã«ãããããè©Šããã®ã§ãããã¯éåžžã«å¥åŠã§ãã ãããã®ãããã§ãæ©èœããŸããã
ãã§ã«ãããã€ããé¢æ°ã§ã¯æ©èœããŸããã
firebase serve --only functions
ã®ä»£ããã«functionsãã£ã¬ã¯ããªå
ããnpm run serve
ãå®è¡ããŠã¿ãŠãã ãããããã¯ãpackage.jsonãã¡ã€ã«ã®æ§ææ¹æ³ã«ãã£ãŠã¯æ©èœããå Žåãšæ©èœããªãå ŽåããããŸãã
æ®å¿µãªããããã®ããã«package.jsonãæ§æããŠããŸããã
> npm run serve
npm ERR! Darwin 17.3.0
npm ERR! argv "/Users/alchemist/.nvm/versions/node/v6.11.5/bin/node" "/Users/karl/.nvm/versions/node/v6.11.5/bin/npm" "run" "serve"
npm ERR! node v6.11.5
npm ERR! npm v3.10.10
npm ERR! missing script: serve
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <https://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! /Users/alchemist/Development/git/learnics/functions-samples/authenticated-json-api/functions/npm-debug.log
äžã€ææããŠããããŸããïŒ
ããã¯ãæ°ããfirebase init
ã®åŸã®ç§ã®å€èŠ³ã§ãïŒ https ïŒ//gist.github.com/dylanjmcdonald/6c033b476e863efaea3eccc0b3137772
3.17.1ã«ã¢ããããŒãããåŸã«ãšã©ãŒãçºçããããã firebase-tools
ã3.16.0ã«ããŠã³ã°ã¬ãŒãããããšã§ããã®ãšã©ãŒãåé¿ããããšãã§ããŸããã
ç§ã¯æåã«CIã©ã³ããŒã§ãã®ãšã©ãŒã«ééããŸãããbcãããã€ã¡ã³ãçšã«ææ°ããŒãžã§ã³ã®firebase-tools
ãã€ã³ã¹ããŒã«ããŠããŸããã äžæ©ã§ãç§ã®ãããã€ã¯æ©èœããªããªããŸããã firebase-admin
ãšfirebase-functions
ãã¢ããã°ã¬ãŒãããåŸã圌ãã¯åã³åãå§ããŸããã
ãããããã®åŸãç§ã®ããŒã«ã«ç°å¢ã¯æ©èœããªããªããŸããã ããã§ããããã€ã§ããŸããããæ©èœãæäŸã§ããŸããã§ããã firebase-tools
ãã¢ã³ã€ã³ã¹ããŒã«ããŠåã€ã³ã¹ããŒã«ããŠã¿ãŸãã...ãããŠç§ãæãã€ãããã¹ãŠã®ããªãšãŒã·ã§ã³ïŒãã£ãã·ã¥ã®ã¯ãªãŒãã³ã°ãææ°ã®NPMã®äœ¿çšã6.11.5ã®äœ¿çšãYarnã®äœ¿çšãªã©ïŒã éããªãã
æåŸã«ããã¹ãŠã以åã«æ©èœããŠããããŒãžã§ã³ã«ããŒã«ããã¯ããCIã¹ã¯ãªããã§äœ¿çšãããŠããããŒãžã§ã³ãïŒææ°ã®ãã®ã䜿çšãã代ããã«ïŒããªãŒãºããããšã«ããŸãããããã§ãäž¡æ¹ã®ç°å¢ãäžè²«ããŠæ©èœããããã«ãªããŸããã
ç§ã¯ãæ°ãæåã«ããã®ãŒãããŸããŸãªå¯èœãªè§£æ±ºçã§ããã®åé¡ã®ããŸããŸãªããªãšãŒã·ã§ã³ãèŠãŠããŸããã å€åããã¯ååž°ã§ããïŒ ããã€ãã®ãããŸããªæ ¹æ¬çãªåé¡ïŒ
ãšããã§ïŒç§ã¯macOS High Sierra 10.13.2ãããŒã«ã«ã§å®è¡ããŠãããGitLabã®CIã©ã³ããŒã®nodeïŒ latestDockerã€ã¡ãŒãžã圹ç«ã€å Žåã¯ãããå®è¡ããŠããŸãã
PSïŒç§ã®çµéšã§ã¯ã npm run dev
ã¯å
éšfirebase serve --only functions
ãå®è¡ããŸãã
@rafasoares ïŒããããšãããããŸãã3.16.0ã«ããŠã³ã°ã¬ãŒããããšãšã©ãŒãä¿®æ£ãããããšã確èªã§ããŸãã
npm install -g [email protected]
macOS High Sierra 10.13.2ã䜿çšããŠããŸããã nvm
ãä»ããŠã€ã³ã¹ããŒã«ãããããŒãv6.11.5ã䜿çšããŠããŸãã
@ The-é¬éè¡åž«ã¯ç§ãå©ããããšãã§ããŠããããã§ãã
brewïŒ9.xïŒãä»ããŠã€ã³ã¹ããŒã«ãããææ°ã®ããŒããšnvmãä»ããŠã€ã³ã¹ããŒã«ããã6.11.5ã®äž¡æ¹ã§è©ŠããŸããã 以åã¯ææ°ã®ããŒãã§æ©èœããŠããŸããïŒãã ããGCPããŒãã®ããŒãžã§ã³èŠåããããŸãïŒã
ã¿ãªãããããã«ã¡ã¯ãææ°ã®firebase-toolsïŒ3.17.1ïŒã«ãææ°ã®firebase-functions SDKãå¿ èŠã§ãããã®ãããåé¡ã解決ããããã®ããè¯ãæ¹æ³ã¯ãfunctionsãã©ã«ããŒå ã§ãnpmi --savefirebase -functions @latestããå®è¡ããããšã§ãããšã©ãŒã¡ãã»ãŒãžã瀺ãããã«ããããã€ãŸãã¯æäŸããåã
@laurenzlongäžèšã®ç§ã®ã³ã¡ã³ããèªã¿ãŸãããïŒ ããã¯ç§ãæåã«è©Šãããã®ã§ããã ãã®åŸã firebase deploy --only functions
ã¯ã§ããŸãããã firebase serve --only functions
ãã
ãããŠãç§ã¯æãã€ããããããçš®é¡ã®ã¯ãªãŒã³ã¢ããæŠç¥ãè©ŠããŸããã äœæ¥ã³ããŒãåé€ããŠãGitãããã¹ãŠãæåããåŒãåºããŸããã
@rafasoaresè¬çœªãç§ã¯ãã®éšåãéããŸããã ä»ãã調ã¹ãŸãã
çŽ æŽãããïŒ ããããšãïŒ
v3.17.2ããªãªãŒã¹ãããåé¡ãä¿®æ£ãããã¯ãã§ããä¿®æ£ãããŠããªãå Žåã¯ãç¥ãããã ããã å ±åããŠãããŠããããšãïŒ
ã¡ããã©v3.17.2ãè©ŠããŸãããç§ã®ããã«åããŸããïŒ
ããã¯ç§ã«ã¯ããŸããããŸããã§ããã äœãšã空çœã®ãããžã§ã¯ãã§åäœãããããšãã§ããŸããããçŸåšã®ãããžã§ã¯ããåäœãããããšãã§ããŸããã§ããã
ããã§ç§ã¯æãã«è¡ããŸããã 2ã€ã®éãã¯äœã§ããïŒ
åé¡ãç¹å®ããããšãã§ããŸããã ãã®ã³ãŒããè¿œå ãããšå£ããŸãïŒ
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase); // <-- Specifically, this line
åæåããããåé€ããã°ãæ©èœãæããããšãã§ããŸãã ãã ããFirestoreã¯äœ¿çšã§ããŸããã
æŽæ°ïŒ functions.config().firebase
åŒã³åºãã次ã®JSONã«çœ®ãæãããšãæ©èœããŸãã
{
databaseURL: 'https://[PROJECT_NAME].firebaseio.com',
storageBucket: '[PROJECT_NAME].appspot.com',
apiKey: '[API KEY]',
authDomain: '[PROJECT_NAME].firebaseapp.com',
projectId: '[PROJECT_NAME]',
credential: admin.credential.applicationDefault()
}
ãã®JSONã¯ã [email protected]
ã䜿çšãããšãã®functions.config().firebase
ã®åºåã§ããïŒããã¥ã¡ã³ãããååŸããcredential
ããããé€ãïŒã
ãã ãããã®ã³ãŒãã䜿çšããŠãããã€ããããšããããšã¯ãããŸããã
@ rafasoaresgoogle -cloud / functions-emulatorã®äŸåé¢ä¿ãããŠã³ã°ã¬ãŒãããŸããããããéãã§ãã ãnpmuninstall-g firebase-toolsïŒnpm i-gfirebase-toolsããè©ŠããŠãã ããã 䜿çšããŠããnpmã®ããŒãžã§ã³ã«ãã£ãŠã¯ãæåã«ã¢ã³ã€ã³ã¹ããŒã«ããªãéããäŸåé¢ä¿ãããŠã³ã°ã¬ãŒããããªãå ŽåããããŸãã
@rafasoares semverã®ããŒãžã§ã³ç®¡çãééã£ãŠããããã§ããïŒ618ã§ä¿®æ£ãããšæããŸãããã®ãã©ã³ãã䜿çšããŠã¿ãŠãã ããã
npm install -g https://github.com/firebase/firebase-tools.git#laurenzlong -patch-1
@laurenzlong
semverã®ããŒãžã§ã³ç®¡çãééã£ãŠããããã§ããïŒ618ã§ä¿®æ£ãããšæããŸãããã®ãã©ã³ãã䜿çšããŠã¿ãŠãã ããã
@rafasoaresãšåãåé¡ãããã npm install -g https://github.com/firebase/firebase-tools.git#laurenzlong-patch-1
ãè©ŠããŸããããåé¡ã¯è§£æ±ºããŠããŸããã
npm install -g [email protected]
ãŸã§ã«ãåé¡ã¯è§£æ±ºãããŸãã
ç³ãèš³ãããŸããããYarnãšNPMãããã£ãŠãæ£ããããŒãžã§ã³ãããŠã³ããŒããããããšããŠããŸãããããããç°å¢ãå°ç¡ãã«ããŠããŸããŸããã
ãã ããã€ã³ã¹ããŒã«ãããŠããããŒãžã§ã³ã@google-cloud/[email protected]
ã§ãã£ãŠãã httpsïŒ //github.com/firebase/firebase-tools.git#laurenzlong-patch-1ã§ãšã©ãŒãçºçããŸãã
@ mono0926 @rafasoaresããã¯ã©ãã§ããïŒ
npm install -g https://github.com/firebase/firebase-tools.git#ll -fixemu
ããªãã®å¿èãšå©ãã«æè¬ããŸãïŒ
@laurenzlong
npm install -g https://github.com/firebase/firebase-tools.git#ll -fixemu
æ®å¿µãªãããããã§ããšã©ãŒãçºçããŸã:(
npm uninstall -g firebase-tools && npm install -g https://github.com/firebase/firebase-tools.git#ll-fixemu
ã©ãã§ãã
@laurenzlong
npm install -g firebase-tools && npm install -g https://github.com/firebase/firebase-tools.git#ll-fixemuã¯ã©ãã§ãã
ç§ã¯ãã§ã«ãããè©ŠããŸããã
ã©ãããhttps://github.com/firebase/firebase-tools.git#ll-fixemuã¯ç§ã®ããã«ãããä¿®æ£ããŸãã
$ yarn global remove firebase-tools
yarn global v1.3.2
[1/2] Removing module firebase-tools...
[2/2] Regenerating lockfile and installing missing dependencies...
success Uninstalled packages.
âš Done in 3.91s.
$ yarn global add https://github.com/firebase/firebase-tools.git\#ll-fixemu
yarn global v1.3.2
[1/4] ð Resolving packages...
warning https://github.com/firebase/firebase-tools.git#ll-fixemu > universal-analytics > [email protected]: Use uuid module instead
[2/4] ð Fetching packages...
[3/4] ð Linking dependencies...
[4/4] ð Building fresh packages...
success Installed "[email protected]" with binaries:
- firebase
âš Done in 11.73s.
$ firebase --version
3.17.2
$ firebase serve --only functions
=== Serving from '/Users/[USERNAME]/dev/projects/[PROJECT NAME]'...
i functions: Preparing to emulate functions.
â functions: createUrl: http://localhost:5000/[PROJECT NAME]/us-central1/createUrl
â functions: getUrl: http://localhost:5000[PROJECT NAME]us-central1/getUrl
çŸåšãããŒãv6.11.5ã䜿çšããŠããŸãã @ mono0926å€åããã¯ãããšé¢ä¿ããããŸããïŒ
@rafasoares
çŸåšãããŒãv6.11.5ã䜿çšããŠããŸãã @ mono0926å€åããã¯ãããšé¢ä¿ããããŸããïŒ
åãããŒãžã§ã³ã®ããŒãã䜿çšããŠããŸãð€
@ mono0926ãããç§ã¯ãã æšæž¬ããŠããŸããã ææ°ã®ãã®ã䜿ã£ãŠã¿ããšãããããŸããããŸããã
ã°ããŒãã«äŸåé¢ä¿ã®åŸ¹åºçãªã¯ãªãŒã³ã¢ãããšãã£ãã·ã¥ã¯ãªãŒã³ã¢ãããè©ŠããŠãã ããïŒãŸãããããžã§ã¯ãã®ããŒã«ã«äŸåé¢ä¿ãåæ§ç¯ããŠã¿ãŠãã ããïŒã ç§ã¯ãã®åé¡ã解決ããããšããŠããéãä»æ¥ãããæ°åè¡ããŸãããå€åããã¯å©ãã«ãªããŸããã
@rachelmyers @laurenzlong
npm install -g https://github.com/firebase/firebase-tools.git#ll-fixemu
ãè©ŠããåŸããšã©ãŒã®è©³çŽ°ãå€æŽãããŠããããšã«æ°ä»ããŸããã
ãããŠãç§ã®ã³ãŒãã§ãšã©ãŒãçºçãããããå€æŽããåŸããšã©ãŒã¯è§£æ±ºããŸããð
[email protected]
ã䜿çšãããšãã³ãŒããå€æŽããªããšãšã©ãŒã¯çºçããŸããã
ããã§ãåŸã§ã話ãããŸãããåé¡ã®è©³çŽ°ã調æ»ããŸããã
@ mono0926ã³ãŒãã§å€æŽããããšãç§ãã¡ãšå ±æããŠãããããã§ããïŒ Firebaseã«é¢é£ãããã®ã§ãããïŒ
@rachelmyers @laurenzlong
ç§ã¯ããã調æ»ããèŠç¹ãç解ããŸããã
ãã®ã³ãŒãã§ã
import * as functions from 'firebase-functions';
import * as util from 'util';
console.error(`environment: ${util.inspect(functions.config().environment.project_id)}`);
ãšã©ãŒãçºçããŸãïŒ
TypeError: Cannot read property 'project_id' of undefined
ãããããã®ã³ãŒãã§ã¯ã
import * as functions from 'firebase-functions';
import * as util from 'util';
console.error(`environment: ${util.inspect(functions.config().environment)}`);
ãã®ãã°ã¯å°å·ãããŸãïŒ
info: environment: { project_id: 'development' }
ææ°ããŒãžã§ã³ã§functions.config().environment
ã®project_id
ã«ã¢ã¯ã»ã¹ã§ããªãã®ã¯ãªãã§ããïŒ
[email protected]
$ã®äžã®$ functions.config().environment
ã®project_id
ã«ã¢ã¯ã»ã¹ã§ããŸããã
ç§ã¯ããããã®åé¡ã®å¥ã®åé¡ã§ããããšãç¥ã£ãŠããŸãã
ã³ãŒãã§å€æŽããå 容ãç§ãã¡ãšå ±æããŠãããããã§ããïŒ Firebaseã«é¢é£ãããã®ã§ãããïŒ
project_id
ã®å€ãäžæçã«ããŒãã³ãŒãã£ã³ã°ããããšã§åé¡ãä¿®æ£ããã®ã§ãåé¡ãä¿®æ£ããŠãã ããã
é¢æ°ããããã€ãããšããåé¡ã¯çºçããŸããã
@ The-Alchemistç§ã確èªããŸããïŒ3.16.0ã«ããŠã³ã°ã¬ãŒããããšãšã©ãŒãä¿®æ£ãããŸããïŒ
npm install -g [email protected]
ç§ã¯macOSHigh Sierra 10.13.2ã䜿çšããŠãããããŒãv8.9.4ã¯ã€ã³ã¹ããŒã©ãŒã«ãã£ãŠåºå®ãããæš©éã§ã€ã³ã¹ããŒã«ãããŠããŸãïŒ httpsïŒ//docs.npmjs.com/getting-started/fixing-npm-permissionsã
Windowsã®[email protected]ã«åé¡ã¯ãããŸããã
ç§ã¯åŸãïŒ
+ [email protected]
updated 1 package in 50.957s
(xenial)marcus<strong i="6">@localhost</strong>:~/app$ firebase serve --only functions
=== Serving from '/home/marcus/app'...
â functions: Cannot start emulator. Error: Cannot find module '/usr/lib/node_modules/firebase-tools/node_modules/grpc/src/node/extension_binary/grpc_node.node'
ããŒã«ã¹ïŒ --only functions
ïŒè€æ°åœ¢ïŒ
2018幎1æ20æ¥åææ¥ãååŸ12æ44åããŒã«ã¹ãããã³ãº[email protected]
æžããŸããïŒ
ç§ã¯åŸãïŒ
- [email protected]
50.957sã§1ã€ã®ããã±ãŒãžãæŽæ°
ïŒxenialïŒ marcus @ localhost ïŒã/ app $ firebase serve --only function=== '/ home / marcus / app' ..ããæäŸ
ãšã©ãŒïŒãããã€ããã¿ãŒã²ãããç解ã§ããŸããã --onlyãŸãã¯--exceptãã©ã°ã䜿çšããå Žåã¯ãæå¹ãªã¿ãŒã²ãããæå®ããããšã確èªããŠãã ããã ãã以å€ã®å Žåã¯ãfirebase.jsonããã§ãã¯ããŠããããžã§ã¯ããç®çã®æ©èœçšã«åæåãããŠããããšã確èªããŸãã
â
ãã®ã¹ã¬ããã«ãµãã¹ã¯ã©ã€ãããŠããããããããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/firebase/firebase-tools/issues/609#issuecomment-359200751 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAAD_tJH6ez89mjEZVdJbPVMDqeKym76ks5tMlAQgaJpZM4Rj8M0
ã
@ mono0926ãšãã¥ã¬ãŒã¿ãŒå ã§ã«ã¹ã¿ã æ§æå€ããµããŒãããããšã¯ãããŸãããå€æ°ã.runtimeconfig.jsonã«ä¿åããããšãã¥ã¬ãŒã¿ã
@ marcus7777ããã¯å¥ã®åé¡ã§ããã httpsïŒ//github.com/firebase/firebase-tools/issues/442ã§ãã£ããã£ãããŠãããšæããŸã
æåã«å ±åããããšã©ãŒã¯v.3.17.3ã§ä¿®æ£ãããŠããããããã®åé¡ã解決ããŸãã
ãããã©ãã»ã©è¿ éã«åŠçããããã¯é©ãã¹ãããšã§ãã çŽ æŽãããä»äº@laurenzlongã ð
@laurenzlong
å€æ°ã.runtimeconfig.jsonã«ä¿åããããšãã¥ã¬ãŒã¿ãŒããã¢ã¯ã»ã¹ã§ããããã«ãfunctionsãã©ã«ããŒå ã§ãfirebasefunctionsïŒconfigïŒget> .runtimeconfig.jsonããå®è¡ããå¿ èŠããããŸãã
ããã§ããã ãã®æ
å ±ãæžãã®ãå¿ããŸããã
ããã¯functions/.runtimeconfig.json
ã§ãïŒ
{
"environment": {
"project_id": "development"
}
}
v3.16.0ã§ã¯functions.config().environment. project_id
ã«ã¢ã¯ã»ã¹ã§ããŸããããææ°ããŒãžã§ã³ïŒv3.17.3ïŒã§ã¯ã¢ã¯ã»ã¹ã§ããŸããã
@ mono0926ããã«ã€ããŠæ°ããåé¡ãéãããšãã§ããŸããïŒ ãŸãã䜿çšããŠããFirebase-Functionã®ããŒãžã§ã³ãå«ããŠãã ããã
@laurenzlong
ãã®ããã®æ°ããåé¡ãéãããšãã§ããŸããïŒ ãŸãã䜿çšããŠããFirebase-Functionã®ããŒãžã§ã³ãå«ããŠãã ããã
ããŠãç§ã¯åé¡ãéããŸããðïŒ https ïŒ//github.com/firebase/firebase-tools/issues/629
3.17.4ã«ã¢ããããŒãããã ãã§ã次ã®ããã«ãªããŸãã
sudo npm install -g firebase-tools
[sudo] password for marcus:
npm WARN deprecated [email protected]: Use uuid module instead
/usr/bin/firebase -> /usr/lib/node_modules/firebase-tools/bin/firebase
+ [email protected]
updated 4 packages in 555.594s
(xenial)marcus<strong i="6">@localhost</strong>:~$ cd app/
(xenial)marcus<strong i="7">@localhost</strong>:~/app$ firebase serve --only functions
=== Serving from '/home/marcus/Downloads/deko-app'...
â functions: Cannot start emulator. Error: Cannot find module '/usr/lib/node_modules/firebase-tools/node_modules/grpc/src/node/extension_binary/grpc_node.node'
(xenial)marcus<strong i="8">@localhost</strong>:~/app$
ïŒ442ãè©ŠããŸããããéããããŸããã
psã xenialã§å®è¡ïŒLinuxïŒ
@ marcus7777ããªããçŽé¢ããŠããåé¡ã¯ããããšã¯ç¡é¢ä¿ã§ãã firebase-toolsãåé€ããŠåã€ã³ã¹ããŒã«ããŠã¿ãŠãã ããã ãããæ©èœããªãå Žåã¯ãæ°ããåé¡ãéããŸãã
ãŸãããšãã¥ã¬ãŒã¿ãŒã®ããŒã«ã«ç¶æ ãåé€ããããšã«æåããŸããã
$ HOME / .config / configstore / @ google-cloud / features-emulator / .functions.json
ããã³åæ§ã®ãã¡ã€ã«ã
ããããšã
ããã«ã¡ã¯ã
ãŸãã firebase-tools @ 3.17.5ã§ããã®åé¡ãçºçããŠããŸãã
@rafasoaresãææããŠããããã«ã次ã®è¡ãè¿œå ãããšåé¡ãçºçããŸãã
admin.initializeApp(functions.config().firebase);
ããã¯ç§ãåŸãŠãããšã©ãŒã§ãïŒ
â functions yarn run shell
yarn run v1.5.1
$ yarn run build && firebase experimental:functions:shell
$ tsc
i functions: Preparing to emulate functions.
â functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
â functions: Error from emulator. Error occurred while parsing your function triggers. Please ensure you have the latest firebase-functions SDK by running "npm i --save firebase-functions@latest" inside your functions folder.
Error: Firebase config variables are not available. Please use the latest version of the Firebase CLI to deploy this function.
at init (/Volumes/HDD/carlosbernal/Dropbox/Wanttu/Futbol/backend/functions/node_modules/firebase-functions/lib/config.js:55:15)
at Object.config (/Volumes/HDD/carlosbernal/Dropbox/Wanttu/Futbol/backend/functions/node_modules/firebase-functions/lib/config.js:29:9)
at Object.<anonymous> (/Volumes/HDD/carlosbernal/Dropbox/Wanttu/Futbol/backend/functions/lib/index.js:5:35)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
No functions emulated.
âš Done in 11.64s.
ãŸãã [email protected]
ã«ããŠã³ã°ã¬ãŒããããšãã·ã§ã«ã«ã¢ã¯ã»ã¹ã§ããŸãããæ°ãããšã©ãŒã衚瀺ãããŸãã
â functions yarn run shell
yarn run v1.5.1
$ yarn run build && firebase experimental:functions:shell
$ tsc
i functions: Preparing to emulate functions.
â functions: Error from emulator. TypeError: Cannot read property 'split' of undefined
â functions: addMessage
firebase >
@laurenzlongãã¶ãç§ãæ¬ ããŠãããã®ããããŸããïŒ
@BernalCarlosãšã©ãŒã¡ãã»ãŒãžã瀺ãããã«ãææ°ã®firebase-functionsããŒãžã§ã³ã䜿çšããŠããããšã確èªããŠãã ããã é¢æ°ãã£ã¬ã¯ããªã§æ¬¡ã®ã³ãã³ããå®è¡ããŸãïŒ `npm i --save firebase-functions @ latest '
ãã®åŸãfunctions /package.jsonã«firebase-functions0.8.1ãå¿ èŠã«ãªããŸã
@laurenzlongç§ã¯ãã§ã«ææ°ããŒãžã§ã³ã®firebase-functionsãæã£ãŠããŸãã ããã¯ç§ã®package.jsonã§ãïŒ
{
"name": "functions",
"scripts": {
"lint": "tslint --project tsconfig.json",
"build": "tsc",
"serve": "yarn run build && firebase serve --only functions",
"shell": "yarn run build && firebase experimental:functions:shell",
"start": "yarn run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"main": "lib/index.js",
"dependencies": {
"firebase-admin": "^5.9.1",
"firebase-functions": "^0.8.1"
},
"devDependencies": {
"tslint": "^5.9.1",
"typescript": "^2.7.2"
},
"private": true
}
ã€ãŒã³ããã¯ã«ã¯ããããããŸãïŒ
...
firebase-functions@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/firebase-functions/-/firebase-functions-0.8.1.tgz#a42fe6d243862c406af16e1c16b1d0a81ec24c03"
dependencies:
"@types/express" "^4.0.33"
"@types/jsonwebtoken" "^7.1.32"
"@types/lodash" "^4.14.34"
"@types/sha1" "^1.1.0"
express "^4.0.33"
jsonwebtoken "^7.1.9"
lodash "^4.6.1"
sha1 "^1.1.1"
...
firebase-admin@^5.9.1:
version "5.9.1"
resolved "https://registry.yarnpkg.com/firebase-admin/-/firebase-admin-5.9.1.tgz#1edf6248d014063f0e473f84fe9d63df18e53807"
dependencies:
"@firebase/app" "^0.1.10"
"@firebase/database" "^0.1.11"
"@google-cloud/firestore" "^0.12.0"
"@google-cloud/storage" "^1.6.0"
"@types/google-cloud__storage" "^1.1.7"
"@types/node" "^8.0.53"
faye-websocket "0.9.3"
jsonwebtoken "8.1.0"
node-forge "0.7.1"
ããããåé¡ã¯ãŸã ååšããŠããŸãã
package.jsonãå ±æããŠããã ããããããšãããããŸãããããžã§ã¯ãã®ãã£ã¬ã¯ããªæ§é ãæããŠãã ããã ã¢ããªããžããªã¯ãŸã ãµããŒããããŠããªããããfunctions / node_modules / firebase-functionsãã©ã«ããŒãå¿ èŠã§ãã
確ãã«@laurenzlongããã¯ç§ã®ãããžã§ã¯ããã£ã¬ã¯ããªæ§é ã§ããnode_modulesãã©ã«ãããããããããªã倧ãããªããŸãã
[email protected] ïŒã€ãŸããfirebase CLIïŒã®åé¡ãåã³çºçãããšãé¢æ°ã«çŽæ¥é¢ä¿ããŸãããã3.17.4ã«ããŒã«ããã¯ãããšãšãã¥ã¬ãŒã·ã§ã³ãæ©èœããŸãã
察å¿ããåé¡ãfirebase-toolsãªããžããªã§éããŸããïŒfirebase / firebase-toolsïŒ691
@Rulsky with [email protected] ãéåžžã«åçŽãªé¢æ°ã®å Žåã¯å¥ã®ãšã©ãŒã§å€±æããŸãã
// index.ts
import * as fbAdmin from "firebase-admin";
import * as fbFunctions from "firebase-functions";
fbAdmin.initializeApp(fbFunctions.config().firebase);
export const addMessage = fbFunctions.https.onRequest((request, response) => {
const original = request.query.text;
response.send(original);
});
ãšã©ãŒïŒ
â functions yarn run shell
yarn run v1.5.1
$ yarn run build && firebase experimental:functions:shell
$ tsc
i functions: Preparing to emulate functions.
â functions: Failed to emulate addMessage
No functions emulated.
âš Done in 12.71s.
ãŸããFirebase CLIã®å®è¡äžã«ãã°ãã¡ã€ã«ãäœæãããããšã«æ°ä»ããŸãããããã®ãããªãã¡ã€ã«ã¯ããã«åé€ãããŸãã ãã®ãã°ãã¡ã€ã«ãåé€ãããªãããã«ããæ¹æ³ã¯ãããŸããïŒ
@BernalCarlosã¯ããµãŒãã¹ç®¡çããŒããããžã§ã¯ãã®functions
ãã£ã¬ã¯ããªã«é
眮ããŸãããïŒ ãããŠãã·ã§ã«ã§GOOGLE_APPLICATION_CREDENTIALSã°ããŒãã«å€æ°ããšã¯ã¹ããŒãããŸãããïŒ
ãããæ©èœãããããšãéèŠã§ãhttps://firebase.google.com/docs/functions/local-emulator
FirebaseèªèšŒããã®ä»ã®GoogleAPIã䜿çšããŠããªãå Žåã¯ãå®éã«ã¯GOOGLE_APPLICATION_CREDENTIALSãèšå®ããå¿ èŠã¯ãããŸããã ãããã£ãŠã @ BernalCarlosã®åé¡ã¯ã httpsïŒ//github.com/firebase/firebase-tools/issues/691ãšåãã ãšæããŸããããã¯ãä¿®æ£ãå ããŠããã®åé¡ã«ãªã³ã¯ããŠããŸãã
CLIãäœæããé¢æ°ã ãã䜿çšããã¯ãªãŒã³ãªãããžã§ã¯ããããã const app = admin.initializeApp(functions.config().firebase);
ãå«ãããšæ©èœããŸããã ãããžã§ã¯ãã¯æ¬¡ã®ããã«èšå®ãããŸãã
`` `
ãäŸåé¢ä¿ãïŒ{
"firebase-admin"ïŒ "ã5.8.1"ã
"firebase-functions"ïŒ "^ 0.8.1"
}
`` `` ``
@ Jhony0311ããªãã¯ããããïŒ691ã®åœ±é¿ãåããŠããŸã
firebase deploy --only functions
ã¯äœ¿çšã§ããŸããã firebase serve --only functions
ã¯äœ¿çšã§ããŸããã
ãnpmrunserveããå®è¡ããåŸãèªã¿èŸŒã¿ãç¶ããŸãã
ié¢æ°ïŒé¢æ°ããšãã¥ã¬ãŒãããæºåãããŠããŸãã
èŠåïŒNode.js v10.5.0ã䜿çšããŠããŸãããGoogle CloudFunctionsã¯v6.11.5ã®ã¿ããµããŒãããŠããŸãã
â é¢æ°ïŒgetSomeDataã®ãšãã¥ã¬ãŒãã«å€±æããŸãã
ié¢æ°ïŒHTTPSé¢æ°ãèŠã€ãããŸããã ä»ã®ã¿ã€ãã®é¢æ°ããšãã¥ã¬ãŒãããå Žåã¯ãfirebaseé¢æ°ïŒshellã䜿çšããŠãã ããã
firebase version: 3.19.3
ããã¯ç§ã®ã³ãŒãã§ãïŒ
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.getSomeData = functions.https.onRequest((req, res) => {
admin.firestore().doc('feedback/d8pGxmML5ZKLYEy5jyhm').get()
.then(doc => res.send(doc.data()))
.catch(err => res.status(500).send(err));
});
å©èšããããŸããïŒ
ããã«ã¡ã¯ãããŒã10ã®åé¡ã§ã
å€ãããŒãžã§ã³ã䜿çšããŠãã ããã ããšãã°ãããŒãžã§ã³8ã
2018幎7æ4æ¥ã01ïŒ46 + 0200ãNicolas [email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
firebase deploy --onlyé¢æ°ã¯äœ¿çšã§ããŸãããfirebaseserve--onlyé¢æ°ã¯äœ¿çšã§ããŸããã
ãnpmrunserveããå®è¡ããåŸãèªã¿èŸŒã¿ãç¶ããŸãã
ié¢æ°ïŒé¢æ°ããšãã¥ã¬ãŒãããæºåãããŠããŸãã
èŠåïŒNode.js v10.5.0ã䜿çšããŠããŸãããGoogle CloudFunctionsã¯v6.11.5ã®ã¿ããµããŒãããŠããŸãã
â é¢æ°ïŒgetSomeDataã®ãšãã¥ã¬ãŒãã«å€±æããŸãã
ié¢æ°ïŒHTTPSé¢æ°ãèŠã€ãããŸããã ä»ã®ã¿ã€ãã®é¢æ°ããšãã¥ã¬ãŒãããå Žåã¯ãfirebaseé¢æ°ïŒshellã䜿çšããŠãã ããã
FirebaseããŒãžã§ã³ïŒ3.19.3
ããã¯ç§ã®ã³ãŒãã§ãïŒ
'å³å¯ã«äœ¿çš';consté¢æ°= requireïŒ 'firebase-functions'ïŒ;
const admin = requireïŒ 'firebase-admin'ïŒ;admin.initializeAppïŒïŒ;
exports.getSomeData = features.https.onRequestïŒïŒreqãresïŒ=> {
admin.firestoreïŒïŒãdocïŒ 'feedback / d8pGxmML5ZKLYEy5jyhm'ïŒãgetïŒïŒ
.thenïŒdoc => res.sendïŒdoc.dataïŒïŒïŒïŒ
.catchïŒerr => res.statusïŒ500ïŒ.sendïŒerrïŒïŒ;
}ïŒ;
å©èšããããŸããïŒ
â
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããããã¹ã¬ããããã¥ãŒãããŠãã ããã
ä»ã®äººã«åœ¹ç«ã€å Žåã«åããŠãç§ã¯Dialogflowã®fulfillment
ã䜿çšããŠãã³ãŒããããŒã«ã«ã§ç·šéããã³ãã¹ãããããšããŠããŸããã ãã®ãšã©ãŒãçºçããŸããã ããã解決ããã®ã¯@rafasoaresãèšã£ãããšãšäŒŒãŠããŸããã
ããã解決ããã«ã¯ã firebase init
çæããããã®ã§ã¯ãªãã䜿çšãããŠããpackage.jsonDialogflowãã³ããŒããå¿
èŠããããŸããã ããŒãžã§ã³ç®¡çã®åé¡ã®ããã§ãã
ç§ã¯ãŸã£ããåãåé¡ãæ±ããŠããŸãã ããŸããŸãªãããã€æ®µéã§ç°å¢å€æ°ã䜿çšããJSONæ§æãã¡ã€ã«ã䜿çšããã ãã ãšæããŸãã ç§ã¯ä¿®æ£ãèŠãããšæã£ãŠããŸããnpmãå®è¡ããŠããããä¿®æ£ããããšã¯ãŸã£ãããããŸããã
ç§ã®å Žåãæåã«firebase deploy
ãå®è¡ããŠããã firebase serve
ãå®è¡ããããšã§ãã°ãä¿®æ£ããŸãããããã°ã¯ãªããªããŸããã
ãã¹ãŠã®firebase-toolsãfirebase-adminãfirebase-functionsãææ°ã®ãã®ã«æŽæ°ããŸãã
"dependencies": {
"firebase-admin": "^7.3.0",
"firebase-functions": "^2.3.0",
"googleapis": "^32.0.0",
"mailgun-js": "^0.18.0",
"moment": "^2.20.1",
"request": "^2.81.0",
"request-promise": "^4.2.1"
},
"private": true,
"devDependencies": {
"firebase-functions-test": "^0.1.2",
"firebase-tools": "^6.8.0",
"mocha": "^5.2.0",
"rewire": "^4.0.1",
"sinon": "^6.0.0",
"underscore": "^1.9.1"
},
ãã ããfirebaseé¢æ°ã·ã§ã«ãå®è¡ããããšãã«ãã®ãšã©ãŒã衚瀺ãããŸã
i functions: Preparing to emulate functions.
â functions: Failed to load functions source code. Ensure that you have the latest SDK by running npm i --save firebase-functions inside the functions directory.
â functions: Error from emulator. Error occurred while parsing your function triggers.
@Randyantoããã«ã¡ã¯ãç§ã¯ããªãã«æ確ãªçããèšãããšã¯ã§ããŸããããç§ã¯ããªãã«ããã€ãã®æããããäžãããããããŸããã ç§ãåããšã©ãŒãçºçããŸããã ç§ã®å Žåã require('firebase')
ããŸãæ©èœããŸããã§ããã ããã§ãã [email protected] ããããŠã³ã°ã¬ãŒãããŠã¿ãŸããã
npm install --save [email protected]
ããããŸããã æåŸã«ãç§ã¯ãã®åé¡ã解決ããããšãã§ããŸããã
ãã¶ããFirebaseããã®ä»ã®æ©èœã«é¢é£ããåé¡ããããŸãã
ããªããæã£ãŠããåããŒãžã§ã³ã®äŸåé¢ä¿ããã§ãã¯ããŠãã ããã 幞éãã
æãåèã«ãªãã³ã¡ã³ã
firebase serve --only functions
ã®ä»£ããã«functionsãã£ã¬ã¯ããªå ããnpm run serve
ãå®è¡ããŠã¿ãŠãã ãããããã¯ãpackage.jsonãã¡ã€ã«ã®æ§ææ¹æ³ã«ãã£ãŠã¯æ©èœããå Žåãšæ©èœããªãå ŽåããããŸãã