webarkit / jsartoolkitNFT

jsartolkitNFT is a smaller version of jsartoolkit5 with only NFT support
GNU Lesser General Public License v3.0
131 stars 25 forks source link

Module '"@webarkit/jsartoolkit-nft"' has no exported member 'ARToolkitNFT' #292

Open timohausmann opened 1 year ago

timohausmann commented 1 year ago

Hey, trying first steps with this module but get this error in my Vite react-ts project:

What I did:

$ npm create vite@latest (etc.)
$ npm i @webarkit/jsartoolkit-nft
import { ARToolkitNFT, ARControllerNFT } from '@webarkit/jsartoolkit-nft'

VS Code says:

Module '"@webarkit/jsartoolkit-nft"' has no exported member 'ARToolkitNFT'
Module '"@webarkit/jsartoolkit-nft"' has no exported member 'ARControllerNFT'

But it works when I add // @ts-ignore above.

Any ideas what' the issue?

kalwalt commented 1 year ago

Hi @timohausmann i have never had this issue, i can import it into ARnft without any problems. Probably a Vite issue? I have no experience with It so i can not say so much. Just a question are you trying to import in a JavaScript file or Typescript?

kalwalt commented 1 year ago

@timohausmann you should add more infos about the issue and if possible a link to a repository with a minimal example to test. Thank you! 🙂

timohausmann commented 1 year ago

Hey, it's a TS file. The issue seems to be that both index.d.ts and index.ts have a default export of an object literal. I'm not sure if deconstructing default exports is valid synxtax. Named exports would be better here, like:

export ARToolkitNFT from "./ARToolkitNFT";
export ARControllerNFT from "./ARControllerNFT";

So currently this works with the default export:

import artools from '@webarkit/jsartoolkit-nft';
const {ARToolkitNFT, ARControllerNFT } = artools;

Codesandbox Demo of the issue: https://codesandbox.io/s/confident-engelbart-o1idk3?file=/src/index.ts

kalwalt commented 1 year ago

Hey, it's a TS file. The issue seems to be that both index.d.ts and index.ts have a default export of an object literal. I'm not sure if deconstructing default exports is valid synxtax. Named exports would be better here, like:

export ARToolkitNFT from "./ARToolkitNFT";
export ARControllerNFT from "./ARControllerNFT";

So currently this works with the default export:

import artools from '@webarkit/jsartoolkit-nft';
const {ARToolkitNFT, ARControllerNFT } = artools;

Codesandbox Demo of the issue: https://codesandbox.io/s/confident-engelbart-o1idk3?file=/src/index.ts

Yes you are right youn need to import in this way:

import artools from '@webarkit/jsartoolkit-nft';
const {ARToolkitNFT, ARControllerNFT } = artools;

I should update the Readme, but i'm going to make some changes and improvements to the C++ and Typescript code. In regards of the question if deconstructing default exports is valid synxtax. probably is not strictly valid, so maybe better to use the named export. If you are interested i'm working on this feature in this PR #301