Apollo Linkã«åé¡ãæåºããŠããã ããããããšãããããŸãã åé¡ãå®è¡å¯èœã§ããããšã確èªããããã«ã次ã®æ å ±ãå¿ ãå«ããŠãã ããã æ©èœãªã¯ãšã¹ããæåºããå Žåã¯ã以äžã®æŠèŠã«åŸãå¿ èŠã¯ãããŸããããã¿ã€ãã«ã«ãæ©èœã®ã¢ã€ãã¢ããå«ãããã®æ©èœã圹ç«ã€å ·äœçãªäŸãå«ããŠãã ããã
ããïŒ
ç§ã¯ãApollo ClientãApollo Linkãbabelãããã³webpackã䜿çšããŠæ°ãããããžã§ã¯ããã»ããã¢ããããããã«åãçµãã§ããŸãã éåžžã«åçŽãªãããžã§ã¯ããã³ãã¬ãŒãã䜿çšããŠãApolloClientã§ææžåãããææ¡ã䜿çšããŠã»ããã¢ããããŸãã å®è¡ããŠã¯ãšãªãéä¿¡ãããšãã©ã³ã¿ã€ã äŸå€ãçºçããã¯ãšãªãå®è¡ã§ããŸããã ããã¯ã zen-observable
ããã±ãŒãžãã©ã®ããã«ã€ã³ããŒãããããã远跡ããŸããã
æå³ããçµæïŒ
Apolloã¯ã©ã€ã¢ã³ãã¯ã次ã®ã³ãŒãã䜿çšããŠãApolloLinkã䜿çšããŠã¯ãšãªãå®è¡ã§ããŸãã
import { ApolloClient } from "apollo-client"
import { HttpLink } from "apollo-link-http"
import { InMemoryCache } from "apollo-cache-inmemory"
import { gql } from "graphql-tag"
const graphqlClient = new ApolloClient({
link: new HttpLink(),
cache: new InMemoryCache(),
})
graphqlClient.query({ query: gql`query { counter { count } }` })
.then(console.log)
.catch(console.error)
å®éã®çµæïŒ
Apolloã¯ã©ã€ã¢ã³ãã¯æ¬¡ã®äŸå€ãã¹ããŒããŸãã
TypeError: _super.call is not a function
Stack trace:
ObservableQuery@webpack-internal:///16:56:21
QueryManager</QueryManager.prototype.watchQuery@webpack-internal:///94:404:16
QueryManager</QueryManager.prototype.query/resPromise<@webpack-internal:///94:431:20
QueryManager</QueryManager.prototype.query@webpack-internal:///94:429:26
ApolloClient</ApolloClient.prototype.query@webpack-internal:///93:102:16
@webpack-internal:///59:14:1
[59]<strong i="19">@http</strong>://host/assets/client.js:16:1
__webpack_require__<strong i="20">@http</strong>://host/assets/manifest.js:713:12
fn<strong i="21">@http</strong>://host/assets/manifest.js:118:20
[49]<strong i="22">@http</strong>://host/assets/client.js:7:18
__webpack_require__<strong i="23">@http</strong>://host/assets/manifest.js:713:12
webpackJsonpCallback<strong i="24">@http</strong>://host/assets/manifest.js:26:23
<strong i="25">@http</strong>://host/assets/client.js:1:1
ObservableQuery
ã¯ãApollo Linkãããžã§ã¯ãããObservable
ãã€ã³ããŒãããApollo Linkãããžã§ã¯ãã¯zen-observable
ããã±ãŒãžããã€ã³ããŒãããŸãã JavaScriptã«ãã©ã³ã¹ãã€ã«ãããšãapollo-linkããã±ãŒãžã®lib/index.js
ãŸãã
import * as Observable from 'zen-observable';
export { Observable };
ããã¯ããã®Observableããã©ã³ã¹ãã€ã«ããåŸã§ãµãã¯ã©ã¹åãããšãã«å¥åŠãªã±ãŒã¹ãåŒãèµ·ããããã§ãããããã¯ç§ã®èª¿æ»ã§ã¯call
ã¡ãœããã䜿çšã§ããªããªã£ãå Žæã®ããã§ãã
åé¡ãåçŸããæ¹æ³ïŒ
æ·»ä»ãããŠããã®ã¯ãåé¡ãå®èšŒããå¿ èŠããããã¹ããããžã§ã¯ãã§ãã Node.jsv6ãŸãã¯v8ãYarnãšãšãã«ã€ã³ã¹ããŒã«ãããŠãããšä»®å®ããŸãã ãã¹ããããžã§ã¯ã
yarn install
yarn run start
ãããŠhttpïŒ// localhost ïŒ3000 /ãéãnode_modules/apollo-link/lib/index.js:3
ã次ã®ããã«å€æŽããããšã§ããããåé¿ã§ããŸãã
import * as Observable from 'zen-observable';
ã«ïŒ
import Observable from 'zen-observable';
åé¡ã¯ã察å¿ãã.tsãã¡ã€ã«ã§ãã®å€æŽãè¡ããšããªã³ãã£ã³ã°ãšã©ãŒãçºçããããšã§ããããã解決ããæåã®æ¹æ³ãããããŸããã
StackOverflowã«ãã®åé¡ããããä»ã®äººããã®åé¡ãæ±ããŠããããšã瀺åããŠããŸãã
ãæéãå²ããŠããã ããç§ã®ãã°ã¬ããŒããã芧ããã ããApolloã§ã®ãã°ãããäœæ¥ã«æè¬ããããŸãã
ç§ã¯åãåé¡ãæ±ããŠããŸãããéãã®ãšã©ãŒããããŸãã
ç§ã®ã³ãŒãã¯ããã«ãããŸãã
import 'isomorphic-fetch'
import { ApolloLink } from 'apollo-link'
import { ApolloClient } from 'apollo-client'
import { HttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory'
export default new ApolloClient({
link: new HttpLink({ uri: 'http://localhost:5000/api/graphql' }),
cache: new InMemoryCache()
})
Uncaught (in promise) TypeError: _apolloLink.Observable is not a constructor
at HttpLink.eval [as request] (httpLink.js:98)
at eval (link.js:60)
at ApolloLink.eval [as request] (ApolloClient.js:30)
at ApolloLink.eval [as request] (link.js:59)
at execute (link.js:94)
at eval (QueryManager.js:134)
at new Promise (<anonymous>)
at QueryManager.mutate (QueryManager.js:129)
at ApolloClient.mutate (ApolloClient.js:109)
at Header.componentDidMount (index.js:53)
ç§ã¯ãã®äœæ¥ãåé¿ããŠ@ stevestrezaã®ãã®ãšåããšã©ãŒãçºçã
`` `js
ã€ã³ããŒã 'å圢ãã§ãã'
'apollo-link'ãã*ãapolloLinkãšããŠã€ã³ããŒãããŸãã
'zen-observable'ããObservableãã€ã³ããŒãããŸã
apolloLink.Observable = Observable
ãã
@stevestreza @mizchiã©ã®ããŒãžã§ã³ã®apollo-clientãšapollo-linkã䜿çšããŠããŸããïŒ
@stevestrezaãææãã* as
ãåé€ããããšã§ãåãåé¡ãä¿®æ£ãããŸããã
ããã§åãåé¡ã
ããã§ãåãã§ãããSOã§æžãããŠããããã«ãåé¡ã¯Webpackå ã§ã¯ãªããApolloãTypeScriptã§çºçããŸãã
ç§ãç¥ã£ãŠããçç±ã¯ãWebpackã®ä»£ããã«Rollupã䜿çšããŠãã³ãã«ãäœæããŠããããã§ãã
ããã¯TypeScript + Rollupã®ãã°ã ãšæããŸãããç§ãã¡èªèº«ã®Rollupãã«ãã«çŸããŠããªãããšã«é©ããŠããŸãã ããã«ãã誰ãããäžèšã§ææ¡ãããå€æŽãè¡ããã«ãªã¯ãšã¹ããéãããšãã§ããŸããïŒ
ããã§ããŒã«ã¢ãããšåãåé¡ã Typescriptã䜿ã£ãŠããŸããã
TSããã¹ãŠå°ç¡ãã«ãªã£ãŠããããã§ãã ãšã©ãŒãä¿®æ£ããããã«ã¢ãžã¥ãŒã«ããã«ãããããšããŸããããTSãšã©ãŒãçºçããŠããŸããã
ããã«ã¡ã¯ç§ã®è³ªåãèš±ããŠãã ããããããããã解決ãããŠããé誰ããä¿®æ£ããã°ã©ã ãæã£ãŠããŸããïŒ æåŸã®å®å®ããŒãžã§ã³ãäœã§ãã£ããã«ã€ããŠäœãèãã¯ãããŸããïŒ
ãããŸã§ã®ç§ã®èª¿æ»ã§ã¯ããã®åé¡ã¯create-react-appã®å€éšã§ã®ã¿çºçãããšæããŸãã ãããã£ãŠããã®_super.call is not a function
åé¡ãåŒãèµ·ãããŠãããææžåãããŠããªãcreate-react-appå
ã®æé»ã®ä»®å®ããããŸãã
ããã§åãåé¡ãçºçããŸãããæ°ãããããžã§ã¯ãã®ããã¥ã¡ã³ãããã©ã£ããšããããã®ãšã©ãŒãçºçããŸããã Apolloãç¶è¡ã§ããŸããã
ç§ã®ä»ã®åé¡ãããã«ãªã³ã¯ããã ãã§ãïŒ https ïŒ
ãããé¢é£ããŠãããã©ããã¯ããããŸããã...
ããŒã«ã¢ããã䜿çšããŠãéåžžã«åçŽãªReactã¢ããªã®ãã³ãã«ãäœæããŸãã apollo-clientãããã¯ã¹ã«å°å ¥ããããšãããŸã§ããã¹ãŠãæ£åžžã«æ©èœããŠããŸãã
ãã¡ãã®ããã¥ã¡ã³ãã«åŸã£ãŠãã ããïŒ https ïŒ
ããŒã«ã¢ããã䜿çšããŠãããžã§ã¯ãããã«ãããããšãããšããã«ãäžã«æ¬¡ã®ãšã©ãŒãçºçããŸãã
of is not exported by node_modules/zen-observable/index.js
47: return new ApolloLink(function (operation, forward) {
48: return (firstLink.request(operation, function (op) {
49: return nextLink.request(op, forward) || Observable.of();
^
50: }) || Observable.of());
51: });
node_modules/apollo-link/lib/link.js
of is not exported by node_modules/zen-observable/index.js
48: return (firstLink.request(operation, function (op) {
49: return nextLink.request(op, forward) || Observable.of();
50: }) || Observable.of());
^
51: });
52: }
node_modules/apollo-link/lib/link.js
of is not exported by node_modules/zen-observable/index.js
74: export { ApolloLink };
75: export function execute(link, operation) {
76: return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of());
^
77: }
äžèšã®é¢é£ããåé¡ã§ææ¡ãããŠããããã«ãiveã¯node_modules/apollo-link/lib/link.js
ã®ã€ã³ããŒããimport Observable from 'zen-observable';
å€æŽããããšããŸããããåé¡ãä¿®æ£ãããŠããªãããã§ãã
ç§ã¯ããŸã£ããç°ãªãzen-observableã®åé¡ã«çŽé¢ããŠããŸãã ã芧ãã ãã
https://github.com/apollographql/apollo-link/issues/389
ãããŠãç§ãäœãééã£ãããšãããŠããã®ãã©ãããææ¡ããŸãã
ç§ã¯ãšãŠãèŠåŽããŠããã®ã§ããã®åé¡ãåé¿ããããã«æ¬¡ã®ããã¯ã䜿çšãããããªãã®ã§ã...
webpack.config.js
{
test: /node_modules\/apollo-link.*?\/lib\/.*?.js/,
loader: 'string-replace-loader',
options: {
search: 'exports.Observable = Observable',
replace: 'exports.Observable = Observable.default'
}
},
ç§ã¯æ¬åœã«ç§ããã®ããã¯ãåãé€ãããšãã§ããããã«ç§ãããã§ããã€ãã®å©ããåŸãããšãã§ããããšãæã¿ãŸã...
PSç§ã¯TypeScriptã䜿çšããããã ããã«ã䜿çšããŸãã ãããç§ã«ãããå£ããŠããçç±ã§ãããã©ããããããªã
ã¿ã€ãã¹ã¯ãªãããªãã§ãåããšã©ãŒãçºçããå€æŽãå ããããšãä¿èšŒã§ããŸã
import * as Observable from 'zen-observable';
ã«ïŒ
import Observable from 'zen-observable';
åé¡ãä¿®æ£ããŸã
ãããŒ@kinyatç§ã¯ããªããwebpackã§ãããè¡ãããšãã§ãããšã¯æããããŸããã§ããã TIL !!! ããããšãããããŸããïŒïŒïŒ
react-apollo
ãšparcel-bundler
ããåºæ¬çãªHelloWorldã¢ããªã§ãåãåé¡ãçºçããŸãã æ³çãªè§£æ±ºçã¯ãããŸããïŒ
@alapini ãåæ³çãªã解決çã®1ã€ã¯ãApolloãétypescriptãŠãŒã¶ãŒïŒã€ãŸãBabelïŒã«tsã³ã³ãã€ã©ããES5ããŒãžã§ã³ãæäŸããããšã ãšæããŸãã
vuex-orm-apolloãã©ã°ã€ã³ã«apolloã䜿çšããŠããŸããã node_modules
å
ã®ãã¡ã€ã«ãå€æŽããããšã¯ç§ã«ãšã£ãŠå®è¡å¯èœãªãªãã·ã§ã³ã§ã¯ãããŸããã ããã«ãã°ä¿®æ£ãæ¬åœã«ããã§ãããïŒ :)
ææ°ããŒãžã§ã³ã®typescriptã䜿çšãããšãã€ã³ããŒãã¯éåžžã®esã¢ãžã¥ãŒã«æ§æã§è¡šçŸã§ãããããApolloãtypescriptããŒãžã§ã³ãã¢ããã°ã¬ãŒãããã®ãåŸ ã€ãšãTS以å€ã®ãŠãŒã¶ãŒã«ãšã£ãŠã¯ããã«æ©èœããŸãã
ç§ã¯ããã«ãªã¹ããããŠããåãåé¡ã®ããã€ãã«ééããŠãããšæããŸãã åããŠapolloã䜿çšããã®ã§ãæ£ããæ¥ç¶ãããŠãããã©ããã¯100ïŒ ããããŸããã ç§ã¯ã€ã³ãã§ã«ãã§ã¿ã€ãã¹ã¯ãªãããªãã®ããŒã«ã¢ããã䜿çšããŠããŸãã
The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten
The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten
The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten
'of' is not exported by 'node_modules/zen-observable/index.js'
'of' is not exported by 'node_modules/zen-observable/index.js'
'of' is not exported by 'node_modules/zen-observable/index.js'
(node:37350) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: 'print' is not exported by node_modules/graphql/language/printer.js
(node:37350) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code
parcel.jsã䜿çšããŠããå Žåããã®PRã¯åé¡ãäžæçã«ä¿®æ£ããããã§ãïŒ https ïŒ
ç§ã¯ãã®åé¡ã«ã€ããŠããŸãæ·±ãæãäžããŠããŸãããã @ fathybãããã§ææããŠ
Babelã®çŸåšã®åäœã¯å®å šã«æ£ãããES6ä»æ§ãå°éããŠããŸãã ã¯ã€ã«ãã«ãŒãã䜿çšããŠããã©ã«ãã®ãšã¯ã¹ããŒããã€ã³ããŒãããããšã¯éæ³ã§ãããããããã§ã®ãšã©ãŒã¯æ£åœã§ãã
ãã ãã人ã ïŒ ïŒ418 ïŒãšã©ã€ãã©ãªïŒantdã@ blueprintjs / coreãªã©ïŒã¯ãŸã ããã«äŸåããŠããŸãã ãšããŸããã¯ãªåå空éã®ä»æ§ãç·©åããããšã§ãããå¯å®¹ã«ãªããšããèãã§ãã
ãããã£ãŠã @ stevestrezaãæçš¿ããåé¿çïŒ * as
åé€ïŒã¯ãapollo-linkã®æ£åœãªä¿®æ£ã§ããããã§ãã
Fwiwã _apolloLink.Observable is not a constructor
ãšã©ãŒãçºçããŠããŸããããäžèšã®parcel.js PRã䜿çšãããšïŒãŸãã¯apollo-client / issues / 2785ã«èšèŒãããŠããããã«parcel.js1.2.1ã«æ»ããšïŒæ¶ã
Vuejsãããžã§ã¯ãã§Rollupã䜿çšããŠãããšãã«ããã®åé¡ãçºçããŠããŸãã
@ tadas412ãå ±æããŠãããŠ
äžèšã®PRã¯1.2.0ã§å ¬éãããŸããã ããã§ã解決ããªãå Žåã¯ãç¥ãããã ããã
ããã§ã1.2.0ã§ãšã©ãŒãçºçããŸãð¢
TypeError: _super.call is not a function
at new ObservableQuery
at QueryManager.watchQuery
at eval
at new Promise
at QueryManager.query
at ApolloClient.query
at VueComponent.created
ããã¯ããã§ã远跡ãããŠããããã§ãapollographql / apollo-client / issues / 2785
ç§ã«ãšã£ãŠã¯ã1.2.0ã§åäœããŸãã
@littletowerã°ãããŠããããã«èããããããããŸãããã1.2.0ã䜿çšããŠããŸããïŒ ãã¶ãnode_modulesãã£ã¬ã¯ããªãåé€ããŠããã±ãŒãžãåã€ã³ã¹ããŒã«ããŸããïŒ ãã å°ãã:)
@phortxããç§ã¯ãã§ã«ãããããŸãã:(
ç§ã¯ãµãã¹ã¯ãªãã·ã§ã³ã䜿çšããŠãããšä»ãå ãããããããŸãããããããäœããå€ãããã©ããã¯ããããŸãã
@littletowerããã¯å¥åŠã§ãã 1.1.0ã§ãåããšã©ãŒãçºçããŠããŸãããã1.2.0ã§è§£æ±ºããããã§ãã apollo-client
ã¯apollo-link
ã«äŸåããŠãããããäŸåé¢ä¿ãæŽæ°ãããªãã£ãå¯èœæ§ããããŸãã è€è£œãªããžããªãäœæã§ããŸããïŒ
ãã®å€æŽã«ãããå®éã®ã³ãŒãã¬ãã«ã®åé¡ã¯ç¢ºå®ã«ä¿®æ£ãããŸãããã yarn
ã競åãåŒãèµ·ãããŠããããã§ãã
npm install
ã䜿çšããŠäŸåé¢ä¿ãã€ã³ã¹ããŒã«ãããšã apollo-client
ããå€æŽããã«apollo-link
1.2.0ãèªã¿èŸŒãŸããŸãã ããã¯ããŸãæ©èœããå ±åãããåé¡ã¯çºçããªããªããŸããã ïŒããã確èªããã«ã¯ã graphql-tag
ãæåã§ã€ã³ã¹ããŒã«ãã src/client/index.js
ã®ã€ã³ããŒãã§äžæ¬åŒ§ãåé€ããå¿
èŠããããŸãïŒyarn install
ã䜿çšãããšãããŒãžã§ã³apollo-link
1.0.0ãã€ã³ã¹ããŒã«ãããŸãã yarn add apollo-link
ã§æ瀺çã«1.2.0ãã€ã³ã¹ããŒã«ãããšã node_modules/apollo-link
ããŒãžã§ã³ã¯1.2.0ã«ãªããŸããã apollo-link
1.0.0ã®å¥ã®ããŒãžã§ã³ãnode_modules/apollo-client/node_modules/apollo-link
ã€ã³ã¹ããŒã«ãããŸãã ãããä¿®æ£ããããã«yarnãã©ã®ããã«æ©èœãããã«ã€ããŠã®ç§ã®ç¥èã¯ãã®æç¹ã§ã¯éããŠããŸãïŒ1.0.0ã§ã¯ãªãapollo-link
1.2.0ãã€ã³ã¹ããŒã«ãããŠãããšæããŸãïŒã ãæ£ãããä¿®æ£ã¯ãpackage.jsonã§apollo-client
ã«å¯ŸããŠapollo-link
1.2.0ãèŠæ±ããããšã ãšæããŸãã apollographql / apollo-clientïŒ2785ã«ã¡ã¢ãããããããŸãã
ãããã«ãããããããããã¯ããã§å®å šã«ä¿®æ£ãããŠããããã§ãïŒ
@evansè€è£œçšã®ãªããžããªãäœæããŸããããäœãæšæž¬ããŸããïŒ åé¡ã¯çºçããŠããŸããããå ã®ã³ãŒãã§ã¯ãŸã åé¡ãçºçããŠããŸã...ããã«èª¿æ»ããŸãã ãã£ãŒãããã¯ããå¯ãããã ãããããšãããããŸãïŒ
Polymer3ãããžã§ã¯ããšapollo-boost
åããšã©ãŒãçºçããŸãïŒ
import { HttpLink } from 'apollo-link-http';
åå
Uncaught SyntaxError: The requested module '../../zen-observable/index.js'
does not provide an export named 'default'
@heruan解決çã¯èŠã€ãããŸãããïŒ ç§ã¯åãåé¡ã«çŽé¢ããŠããŸãã
æãåèã«ãªãã³ã¡ã³ã
ç§ã¯ãšãŠãèŠåŽããŠããã®ã§ããã®åé¡ãåé¿ããããã«æ¬¡ã®ããã¯ã䜿çšãããããªãã®ã§ã...
webpack.config.js
ç§ã¯æ¬åœã«ç§ããã®ããã¯ãåãé€ãããšãã§ããããã«ç§ãããã§ããã€ãã®å©ããåŸãããšãã§ããããšãæã¿ãŸã...
PSç§ã¯TypeScriptã䜿çšããããã ããã«ã䜿çšããŸãã ãããç§ã«ãããå£ããŠããçç±ã§ãããã©ããããããªã