По сути, проблема решается вокруг извлечения тегов GraphQL из машинописного текста во время преобразований. Я нашел решение благодаря работе в этих PR # 1710 и # 2293 .
Вот шаги:
Измените конфигурацию веб-пакета, включив в нее загрузчик babel (только для запуска машинописи есть ts-загрузчик).
...
test: /\.(ts|tsx)$/,
include: paths.appSrc,
exclude: /node_modules/,
use: [
{ loader: 'babel-loader' },
{
loader: require.resolve('ts-loader'),
options: {
transpileOnly: true,
},
},
],
...
Измените конфигурацию target
и module
в tsconfig на es2015
...
"target": "es2015",
"module": "es2015",
...
Добавить relay-compiler-language-typescript
yarn add relay-compiler-language-typescript -D
Также добавьте babel-plugin-transform-es2015-modules-commonjs
.
yarn add babel-plugin-transform-es2015-modules-commonjs -D
Поскольку теперь мы нацелены на es2015, этот плагин необходим для поддержки операторов ES module import
и export
.
И скрипт для компиляции операторов graphql
"relay": "relay-compiler --src ./src --schema src/schema.graphql --language typescript --artifactDirectory ./src/__generated__ --watch"
Укажите плагин реле для использования артефактов, сгенерированных вышеуказанной командой в .babelrc
"plugins": [
"transform-es2015-modules-commonjs",
["relay", { "artifactDirectory": "./src/__generated__" }],
],