Skip to content

Instantly share code, notes, and snippets.

@sevazhidkov
Last active August 10, 2022 16:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sevazhidkov/2da9b083a8cfc432f36697838b430b1d to your computer and use it in GitHub Desktop.
Save sevazhidkov/2da9b083a8cfc432f36697838b430b1d to your computer and use it in GitHub Desktop.
Incompatible imports
import {
createAssociatedTokenAccountInstruction,
} from '@solana/spl-token';
import {
buildWhirlpoolClient,
} from '@orca-so/whirlpools-sdk';
{
"name": "test-token-import",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"@orca-so/whirlpools-sdk": "^0.5.0",
"@solana/spl-token": "^0.2.0",
"typescript": "^4.7.4"
},
"scripts": {
"build": "tsc -p tsconfig.json"
}
}
{
"compilerOptions": {
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
},
"include": ["index.ts"]
}
seva@Sevas-MBP test-token-import % yarn run build
yarn run v1.22.19
$ tsc -p tsconfig.json
index.ts:2:5 - error TS2305: Module '"@solana/spl-token"' has no exported member 'createAssociatedTokenAccountInstruction'.
2 createAssociatedTokenAccountInstruction,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Found 1 error in index.ts:2
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
There is definitely a "createAssociatedTokenAccountInstruction" in this version:
seva@Sevas-MBP test-token-import % cat ./node_modules/@solana/spl-token/package.json
{
"name": "@solana/spl-token",
"version": "0.2.0",
// ...
}
There is no "createAssociatedTokenAccountInstruction" in this version though:
seva@Sevas-MBP test-token-import % cat node_modules/@orca-so/common-sdk/node_modules/@solana/spl-token/package.json
{
"name": "@solana/spl-token",
"version": "0.1.8",
// ...
}
Why does Typescript use the latter?
# Let's delete "import { buildWhirlpoolClient } from '@orca-so/whirlpools-sdk';" from index.ts and try to run it
seva@Sevas-MBP test-token-import % cat index.ts
import {
createAssociatedTokenAccountInstruction,
} from '@solana/spl-token';
// import {
// buildWhirlpoolClient,
// } from '@orca-so/whirlpools-sdk';
seva@Sevas-MBP test-token-import % yarn run build
yarn run v1.22.19
$ tsc -p tsconfig.json
✨ Done in 1.44s.
# For some reason, it works!
seva@Sevas-MBP test-token-import % yarn run build -- --traceResolution
yarn run v1.22.19
warning From Yarn 1.0 onwards, scripts don't require "--" for options to be forwarded. In a future version, any explicit "--" will be forwarded as-is to the scripts.
$ tsc -p tsconfig.json --traceResolution
======== Resolving module '@solana/spl-token' from '/Users/seva/test-token-import/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module '@solana/spl-token' from 'node_modules' folder, target file type 'TypeScript'.
Found 'package.json' at '/Users/seva/test-token-import/node_modules/@solana/spl-token/package.json'.
'package.json' does not have a 'typesVersions' field.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token.ts' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token.tsx' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token.d.ts' does not exist.
'package.json' does not have a 'typings' field.
'package.json' has 'types' field 'lib/types/index.d.ts' that references '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/index.d.ts'.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/index.d.ts' exist - use it as a name resolution result.
Resolving real path for '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/index.d.ts', result '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/index.d.ts'.
======== Module name '@solana/spl-token' was successfully resolved to '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/index.d.ts' with Package ID '@solana/spl-token/lib/types/index.d.ts@0.2.0'. ========
======== Resolving module '@orca-so/whirlpools-sdk' from '/Users/seva/test-token-import/index.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module '@orca-so/whirlpools-sdk' from 'node_modules' folder, target file type 'TypeScript'.
Found 'package.json' at '/Users/seva/test-token-import/node_modules/@orca-so/whirlpools-sdk/package.json'.
'package.json' does not have a 'typesVersions' field.
File '/Users/seva/test-token-import/node_modules/@orca-so/whirlpools-sdk.ts' does not exist.
File '/Users/seva/test-token-import/node_modules/@orca-so/whirlpools-sdk.tsx' does not exist.
File '/Users/seva/test-token-import/node_modules/@orca-so/whirlpools-sdk.d.ts' does not exist.
'package.json' does not have a 'typings' field.
'package.json' has 'types' field 'dist/index.d.ts' that references '/Users/seva/test-token-import/node_modules/@orca-so/whirlpools-sdk/dist/index.d.ts'.
File '/Users/seva/test-token-import/node_modules/@orca-so/whirlpools-sdk/dist/index.d.ts' exist - use it as a name resolution result.
Resolving real path for '/Users/seva/test-token-import/node_modules/@orca-so/whirlpools-sdk/dist/index.d.ts', result '/Users/seva/test-token-import/node_modules/@orca-so/whirlpools-sdk/dist/index.d.ts'.
======== Module name '@orca-so/whirlpools-sdk' was successfully resolved to '/Users/seva/test-token-import/node_modules/@orca-so/whirlpools-sdk/dist/index.d.ts' with Package ID '@orca-so/whirlpools-sdk/dist/index.d.ts@0.5.0'. ========
======== Resolving module './instructions/index' from '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/index.d.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/instructions/index', target file type 'TypeScript'.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/instructions/index.ts' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/instructions/index.tsx' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/instructions/index.d.ts' exist - use it as a name resolution result.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/package.json' exists according to earlier cached lookups.
======== Module name './instructions/index' was successfully resolved to '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/instructions/index.d.ts' with Package ID '@solana/spl-token/lib/types/instructions/index.d.ts@0.2.0'. ========
======== Resolving module './state/index' from '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/index.d.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/state/index', target file type 'TypeScript'.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/state/index.ts' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/state/index.tsx' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/state/index.d.ts' exist - use it as a name resolution result.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/package.json' exists according to earlier cached lookups.
======== Module name './state/index' was successfully resolved to '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/state/index.d.ts' with Package ID '@solana/spl-token/lib/types/state/index.d.ts@0.2.0'. ========
======== Resolving module './actions/index' from '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/index.d.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/actions/index', target file type 'TypeScript'.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/actions/index.ts' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/actions/index.tsx' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/actions/index.d.ts' exist - use it as a name resolution result.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/package.json' exists according to earlier cached lookups.
======== Module name './actions/index' was successfully resolved to '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/actions/index.d.ts' with Package ID '@solana/spl-token/lib/types/actions/index.d.ts@0.2.0'. ========
======== Resolving module './constants' from '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/index.d.ts'. ========
Module resolution kind is not specified, using 'NodeJs'.
Loading module as file / folder, candidate module location '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/constants', target file type 'TypeScript'.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/constants.ts' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/constants.tsx' does not exist.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/constants.d.ts' exist - use it as a name resolution result.
File '/Users/seva/test-token-import/node_modules/@solana/spl-token/package.json' exists according to earlier cached lookups.
======== Module name './constants' was successfully resolved to '/Users/seva/test-token-import/node_modules/@solana/spl-token/lib/types/constants.d.ts' with Package ID '@solana/spl-token/lib/types/constants.d.ts@0.2.0'. ========
// ... and a lot more stuff related to octa
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment