2017-09-13 7 views
0

I'have le code moderne de relais simple:variable n'est pas dans l'erreur de portée lorsque le relais compilation relais Code moderne

import React, { Component } from 'react'; 
import PropTypes from 'prop-types'; 

import { 
    QueryRenderer, 
    graphql 
} from 'react-relay' 


import environment from '../../../../../environment' 

const CompanyItemQuery = graphql` 

query CompanyItem_Query { 
    node(id: $companyId) { 
    id 
    ...on Company { 
     id 
     name 
    } 
} 
} 
` 

class CompanyItem extends Component { 

    render() { 

     return (
       <QueryRenderer 
        environment={environment} 
        query={CompanyItemQuery} 
        variables={{ 
         companyId: 'test', 
        }} 
        render={({error, props}) => { 
         <div> 
          <p>Relay loaded {props.name} company</p> 
         </div> 
       }} 
       /> 
     ); 
    } 
}; 

export default CompanyItem; 

je essaie de relayer-compiler le code avant d'exécuter et je me fais l'erreur suivante:

> relay-compiler --src ./src --schema ./src/data/schema.graphql 

HINT: pass --watch to keep watching for changes. 
Parsed default in 0.08s 

Writing default 
Invariant Violation: RelayApplyFragmentArgumentTransform: variable `companyId` is not in scope. 
    at invariant (D:\DEV\WORKSPACE\client\node_modules\fbjs\lib\invariant.js:44:15) 
    at transformValue (D:\DEV\WORKSPACE\client\node_modules\relay-compiler\bin\relay-compiler:4505:28) 
    at D:\DEV\WORKSPACE\client\node_modules\relay-compiler\bin\relay-compiler:4497:18 
    at Array.map (native) 
    at transformArguments (D:\DEV\WORKSPACE\client\node_modules\relay-compiler\bin\relay-compiler:4496:16) 
    at transformField (D:\DEV\WORKSPACE\client\node_modules\relay-compiler\bin\relay-compiler:4417:15) 
    at D:\DEV\WORKSPACE\client\node_modules\relay-compiler\bin\relay-compiler:4476:24 
    at Array.forEach (native) 
    at transformSelections (D:\DEV\WORKSPACE\client\node_modules\relay-compiler\bin\relay-compiler:4461:15) 
    at transformNode (D:\DEV\WORKSPACE\client\node_modules\relay-compiler\bin\relay-compiler:4385:21) 

npm ERR! Windows_NT 10.0.14393 
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "relay" 
npm ERR! node v6.9.2 
npm ERR! npm v3.10.9 
npm ERR! code ELIFECYCLE 
npm ERR! [email protected] relay: `relay-compiler --src ./src --schema ./src/data/schema.graphql` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] relay script 'relay-compiler --src ./src --schema ./src/data/schema.graphql'. 
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 mom-client package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  relay-compiler --src ./src --schema ./src/data/schema.graphql 
npm ERR! You can get information on how to open an issue for this project with: 
npm ERR!  npm bugs mom-client 
npm ERR! Or if that isn't available, you can get their info via: 
npm ERR!  npm owner ls mom-client 
npm ERR! There is likely additional logging output above. 

npm ERR! Please include the following file with any support request: 
npm ERR!  D:\DEV\WORKSPACE\client\npm-debug.log 

Je ne peux pas trouver pourquoi ma companyId variable n'est pas portée, tel qu'il est défini dans la section variables du QueryRenderer comme indiqué dans la documentation.

Si j'utilise une valeur fixe pour id (exemple node id: "Company:59b2cda12504b914cc398100") le code est compilé par relais et je peux obtenir mes données récupérées normalement. Le problème se pose lorsque j'ai besoin de choisir l'identifiant dynamiquement.

Aide appréciée pour résoudre ce problème.

Répondre

5

On dirait que vous avez manqué de déclarer la variable (et le type) dans le nom de la requête - donc ceci:

query CompanyItem_Query($companyId: ID!) { 

au lieu de ceci:

query CompanyItem_Query { 

Vous pouvez voir plus de contexte dans l'exemple sur le site relais - https://facebook.github.io/relay/docs/query-renderer.html

+0

Oui, simplement manquant. – Mendes