Apollo Link์ ๋ฌธ์ ๋ฅผ ์ ์ถํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋ฌธ์ ๊ฐ ์คํ ๊ฐ๋ฅํ์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ์ ๋ณด๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค. ๊ธฐ๋ฅ ์์ฒญ์ ์ ์ถํ๋ ๊ฒฝ์ฐ ์๋ ๊ฐ์๋ฅผ ๋ฐ๋ฅผ ํ์๋ ์์ง๋ง ์ ๋ชฉ์ "๊ธฐ๋ฅ ์์ด๋์ด"๋ฅผ ํฌํจํ๊ณ ํด๋น ๊ธฐ๋ฅ์ด ์ ์ฉํ ๊ตฌ์ฒด์ ์ธ ์๋ฅผ ํฌํจํ์ญ์์ค.
์๋ ํ์ธ์!
Apollo Client, Apollo Link, babel ๋ฐ webpack์ผ๋ก ์ ํ๋ก์ ํธ๋ฅผ ์ค์ ํ๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. ๋๋ ๋งค์ฐ ๊ฐ๋จํ ํ๋ก์ ํธ ํ
ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ Apollo Client์์ ๋ฌธ์ํ๋ ์ ์์ผ๋ก ์ค์ ํฉ๋๋ค. ์คํํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๋ฉด ๋ฐํ์ ์์ธ๊ฐ ๋ฐ์ํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์งํํ ์ ์์ต๋๋ค. zen-observable
ํจํค์ง๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ถ์ ํ์ต๋๋ค.
์๋ํ ๊ฒฐ๊ณผ:
Apollo ํด๋ผ์ด์ธํธ๋ ๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ Apollo Link๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
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
๋ zen-observable
ํจํค์ง์์ ๊ฐ์ ธ์ค๋ Apollo Link ํ๋ก์ ํธ์์ Observable
๋ฅผ ๊ฐ์ ธ์ต๋๋ค. JavaScript๋ก ๋ณํํ ๋ apollo-link ํจํค์ง๋ lib/index.js
.
import * as Observable from 'zen-observable';
export { Observable };
์ด๋ก ์ธํด ์ด Observable์ ํธ๋์คํ์ผํ๊ณ ๋์ค์ ์๋ธํด๋์ฑํ ๋ ์ด์ํ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ง๋ง ์ฌ๊ธฐ์์ call
๋ฉ์๋๋ฅผ ๋ ์ด์ ์ฌ์ฉํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฌธ์ ๋ฅผ ์ฌํํ๋ ๋ฐฉ๋ฒ:
์ด ๋ฌธ์ ๋ฅผ ์ ์ฆํด์ผ ํ๋ ํ ์คํธ ํ๋ก์ ํธ๊ฐ ์ฒจ๋ถ๋์ด ์์ต๋๋ค. Yarn๊ณผ ํจ๊ป ์ค์น๋ Node.js v6 ๋๋ v8์ ๊ฐ์ ํฉ๋๋ค. ํ ์คํธ ํ๋ก์ ํธ
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 ํ์ผ์์ ์ด ๋ณ๊ฒฝ์ ์ํํ๋ฉด Linting ์คํจ๊ฐ ๋ฐ์ํ๊ณ ์ด๋ฅผ ํด๊ฒฐํ๋ ์ต์ ์ ๋ฐฉ๋ฒ์ด ํ์คํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์์ ๋ํ๋ด๋ 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 = ๊ด์ฐฐ ๊ฐ๋ฅ
````
@stevestreza @mizchi ์ด๋ค ๋ฒ์ ์ apollo-client์ apollo-link๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
์ฌ๊ธฐ ๊ฐ์ ๋ฌธ์ [email protected] ์นํฉ ํ๋ก์ ํธ๋ ์ ๊ฑฐํ์ฌ ๊ณ ์ ๋ * as
import ๋ฌธ์, @stevestreza ์ง์ ํ๋ค.
๋์ผํ ๋ฌธ์ ๊ฐ ์ฌ๊ธฐ์ ์์ต๋๋ค.
์ฌ๊ธฐ์์๋ ๋์ผํ๋ฉฐ 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://github.com/apollographql/apollo-client/issues/2785#issuecomment -354169337 ์ ์๋ ์์ ์ฌํญ์ด ์๋ ๊ณณ(ํ ์คํธํ์ง ์์)
์ด๊ฒ์ด ๊ด๋ จ์ด ์๋์ง ํ์คํ์ง ์์ง๋ง ...
์์ฃผ ๊ฐ๋จํ ๋ฐ์ ์ฑ์ ์ํ ๋ฒ๋ค์ ๋ง๋ค๊ธฐ ์ํด ๋กค์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ด๊ฐ apollo-client๋ฅผ ํผํฉ์ ๋์ ํ๋ ค๊ณ ํ ๋๊น์ง ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค.
๋ค์ ๋ฌธ์: https://www.apollographql.com/docs/react/basics/setup.html#installation
๋กค์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ ค๊ณ ์๋ํ ํ ๋น๋ ์ค์ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
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: }
์์ ๊ด๋ จ ๋ฌธ์ ์์ ์ ์ํ ๋๋ก node_modules/apollo-link/lib/link.js
์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ import Observable from 'zen-observable';
๋ก ๋ณ๊ฒฝํ๋ ค๊ณ ์๋ํ์ง๋ง ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ์๋นํ ๋ค๋ฅธ zen-observable ๋ฌธ์ ์ ์ง๋ฉดํด ์์ต๋๋ค. ๋ด์ฃผ์ธ์
https://github.com/apollographql/apollo-link/issues/389
๋ด๊ฐ ์๋ชปํ๊ณ ์๋์ง ์ ์ํ์ญ์์ค.
๋๋ฌด ํ๋ค์ด์ ๋ค์ ํดํน์ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ๋ฐ์ ์์ต๋๋ค...
์นํฉ.config.js
{
test: /node_modules\/apollo-link.*?\/lib\/.*?.js/,
loader: 'string-replace-loader',
options: {
search: 'exports.Observable = Observable',
replace: 'exports.Observable = Observable.default'
}
},
์ด ํดํน์ ์ ๊ฑฐํ ์ ์๋๋ก ์ฌ๊ธฐ์์ ๋์์ ๋ฐ์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ถ์ ์ ๋ TypeScript๋ฅผ ์ฌ์ฉํ์ง ์๊ณ babel๋ง ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ๋์๊ฒ ๊นจ์ง ์ด์ ์ธ์ง ํ์คํ์ง ์์ต๋๋ค.
typescript ์์ด๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ด ์์์ ๋ณด์ฆํ ์ ์์ต๋๋ค.
import * as Observable from 'zen-observable';
์๊ฒ:
import Observable from 'zen-observable';
๋ฌธ์ ๋ฅผ ํด๊ฒฐ
์ ์ฅ @kinyat ์นํฉ์ผ๋ก ๊ทธ๋ ๊ฒ ํ ์ ์๋์ง ์ ํ ๋ชฐ๋์ต๋๋ค. ํธ!!! ๊ฐ์ฌ ํด์!!!
react-apollo
๋ฐ parcel-bundler
๊ฐ ์๋ ๊ธฐ๋ณธ Hello World ์ฑ์ ๋์ผํ ๋ฌธ์ ์
๋๋ค. ์ด๋ค ๋ฒ์ ํด๊ฒฐ์ฑ
์ด ์์ต๋๊น?
@alapini ๋ด ์๊ฐ์ "ํฉ๋ฒ์ ์ธ" ์๋ฃจ์ ์ค ํ๋๋ Apollo๊ฐ non-typescript ์ฌ์ฉ์(์: Babel)์๊ฒ ts ์ปดํ์ผ๋ฌ์ ES5 ๋ฒ์ ์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
vuex-orm-apollo ํ๋ฌ๊ทธ์ธ์ apollo๋ฅผ ์ฌ์ฉ ํ๊ณ ์์ผ๋ฉฐ node_modules
๋ด์์ ํ์ผ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์คํ ๊ฐ๋ฅํ ์ต์
์ด ์๋๋๋ค. ๊ณง ๋ฒ๊ทธ ์์ ์ด ์ ๋ง ์ข์ ๊ฒ์
๋๋ค! :)
์ต์ ๋ฒ์ ์ typescript๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ์ผ๋ฐ es ๋ชจ๋ ๊ตฌ๋ฌธ์ผ๋ก ํํํ ์ ์์ผ๋ฏ๋ก Apollo๊ฐ typescript ๋ฒ์ ์ ์ ๊ทธ๋ ์ด๋ํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉด TS ์ฌ์ฉ์๊ฐ ์๋ ์ฐ๋ฆฌ๋ฅผ ์ํด ์ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋์ด๋ ๊ฒ๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ํด๋ก๋ฅผ ์ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๊ฒฐํ๊ณ ์๋์ง 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://github.com/parcel-bundler/parcel/pull/530
์ด ๋ฌธ์ ์ ๋ํด ๋๋ฌด ๊น์ด ํ๊ณ ๋ค์ง ๋ ์ฌ๊ธฐ ์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ๋ฌธ์ ์ ํต์ฌ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค .
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.js 1.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 ์ด์ 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 ๋ฒ์ ์ด ์ค์น๋ฉ๋๋ค. 1.2.0์ ๋ช
์์ ์ผ๋ก yarn add apollo-link
์ค์นํ๋ฉด node_modules/apollo-link
๋ฒ์ ์ 1.2.0์ด ๋์ง๋ง apollo-link
1.0.0์ ๋ค๋ฅธ ๋ฒ์ ์ node_modules/apollo-client/node_modules/apollo-link
.์ด ์์ ์์ ์์ฌ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์์ด ์์ต๋๋ค(1.0.0์ด ์๋๋ผ apollo-link
1.2.0์ ์ค์นํ์ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค). "์ฌ๋ฐ๋ฅธ"์์ ์ apollo-link
์ ๋ํ package.json์ apollo-client
apollo-link
1.2.0์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. apollographql/apollo-client#2785์ ๋ฉ๋ชจ๋ฅผ ๋จ๊น๋๋ค.
์ด๋ ์ชฝ์ด๋ , ์ด๊ฒ์ ์ฌ๊ธฐ์์ ์์ ํ ํด๊ฒฐ๋ ๊ฒ ๊ฐ์ต๋๋ค!
@evans ์ฌ์์ฐ์ ์ํด repo๋ฅผ ๋ง๋ค์๊ณ ๋ฌด์์ ์ถ์ธกํฉ๋๊น? ๋๋ ๋ฌธ์ ๊ฐ ์์ง๋ง ์๋ ์ฝ๋์์๋ ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค... ๋ ์กฐ์ฌํ๊ฒ ์ต๋๋ค. ํผ๋๋ฐฑ์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
Polymer 3 ํ๋ก์ ํธ์ 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 ํด๊ฒฐ์ฑ ์ ์ฐพ์ผ์ จ์ต๋๊น? ๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ฌด ํ๋ค์ด์ ๋ค์ ํดํน์ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ๋ฐ์ ์์ต๋๋ค...
์นํฉ.config.js
์ด ํดํน์ ์ ๊ฑฐํ ์ ์๋๋ก ์ฌ๊ธฐ์์ ๋์์ ๋ฐ์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ถ์ ์ ๋ TypeScript๋ฅผ ์ฌ์ฉํ์ง ์๊ณ babel๋ง ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ๋์๊ฒ ๊นจ์ง ์ด์ ์ธ์ง ํ์คํ์ง ์์ต๋๋ค.