I don't know what went wrong but when i try npm run build
which runs graph build
it throws error mentioned bellow
Compile subgraphERROR TS2322: Type '\~lib/array/Array\<\~lib/@graphprotocol/graph-ts/common/numbers/Address\>' is not assignable to type '\~lib/array/Array\<\~lib/@graphprotocol/graph-ts/common/collections/Bytes\>'.
entity.targets = event.params.targets;
\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~
in src/dcode-dao.ts(43,20)
✖ Failed to compile subgraph: Failed to compile data source mapping: 1 compile error(s)
Error: Failed to compile data source mapping: 1 compile error(s)
at Compiler.\_compileDataSourceMapping (/home/eu4/Desktop/DcodeGraph/node_modules/@graphprotocol/graph-cli/src/compiler/index.js:320:13)
at /home/eu4/Desktop/DcodeGraph/node_modules/@graphprotocol/graph-cli/src/compiler/index.js:224:20
at updateInDeepMap (/home/eu4/Desktop/DcodeGraph/node_modules/immutable/dist/immutable.js:1971:22)
at updateInDeepMap (/home/eu4/Desktop/DcodeGraph/node_modules/immutable/dist/immutable.js:1980:23)
at updateInDeepMap (/home/eu4/Desktop/DcodeGraph/node_modules/immutable/dist/immutable.js:1980:23)
at Map.updateIn (/home/eu4/Desktop/DcodeGraph/node_modules/immutable/dist/immutable.js:1278:26)
at /home/eu4/Desktop/DcodeGraph/node_modules/@graphprotocol/graph-cli/src/compiler/index.js:223:24
at /home/eu4/Desktop/DcodeGraph/node_modules/immutable/dist/immutable.js:3016:46
at List.\__iterate (/home/eu4/Desktop/DcodeGraph/node_modules/immutable/dist/immutable.js:2206:13)
at IndexedIterable.mappedSequence.\__iterateUncached (/home/eu4/Desktop/DcodeGraph/node_modules/immutable/dist/immutable.js:3015:23)
UNCAUGHT EXCEPTION: Error: The AssemblyScript compiler crashed when compiling this file: 'src/dcode-dao.ts'
Suggestion: try to comment the whole file and uncomment it little by little while re-running the graph-cli until you isolate the line where the problem happens.
Also, please contact us so we can make the CLI better by handling errors like this. You can reach out in any of these links:
- Discord channel: https://discord.gg/eM8CA6WA9r
- Github issues: https://github.com/graphprotocol/graph-cli/issues
I was creating a DAO contract using Openzeppelin Governor contract and this contract emits an event called
ProposalCreated (uint256 proposalId, address proposer, address\[\] targets, uint256\[\] values, string\[\] signatures, bytes\[\] calldatas, uint256 startBlock, uint256 endBlock, string description)
You can see that it emits an Address array named targets. when i run npm run codegen
it create this parameter as an Address Array type object. and in side the build script it assigns to a Bytes Array type Object.
and it throws the error.
ERROR TS2322: Type '\~lib/array/Array\<\~lib/@graphprotocol/graph-ts/common/numbers/Address\>' is not assignable to type '\~lib/array/Array\<\~lib/@graphprotocol/graph-ts/common/collections/Bytes\>'.
entity.targets = event.params.targets;
\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~
in src/dcode-dao.ts(43,20)
i have mentioned whole error console on top of the issue.
inshort Address Array can not be Assigned to the Bytes Array.
Tell me if you need any screen shot of the error.
Since the npm run codegen
created the this Address and Bytes object automatically i can't change it.
these build was automatically generated on graph init
so i think this should work just fine.
I have done the following and it worked
entity.targets = changetype<Bytes[]>(event.params.targets)
here the event.params.targets
is an Address[]
and entity.targets
is a Bytes[]
so I have changed its type with changetype<Bytes[]>
.
I don't know if this is a good fix, but it worked.