cevek / ttypescript

Over TypeScript tool to use custom transformers in the tsconfig.json
1.53k stars 56 forks source link

TypeError: f is not a function #33

Closed danielpza closed 5 years ago

danielpza commented 5 years ago

Hi, I made a transform for typescript and ttypescript is not working with it.

This is the transform, https://github.com/LeDDGroup/typescript-transform-jsx, and this are the test to show that the transform is working https://github.com/LeDDGroup/typescript-transform-jsx/blob/master/src/index.test.ts.

Here I'm testing it with ttypescript https://github.com/danielpa9708/test-typescript-transform-jsx. It throws this error:

$ npm run build

> test-jsx@1.0.0 build /home/daniel/projects/mine/test-jsx
> ttsc

undefined:86983
                throw e;
                ^

TypeError: f is not a function
    at eval (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:1390:86)
    at reduceLeft (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:1102:30)
    at eval (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:1390:42)
    at transformRoot (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:81142:82)
    at Object.map (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:429:29)
    at Object.transformNodes (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:81129:30)
    at emitJsFileOrBundle (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:81485:32)
    at emitSourceFileOrBundle (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:81453:13)
    at forEachEmittedFile (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:81361:30)
    at Object.emitFiles (eval at loadTypeScript (/home/daniel/projects/mine/test-jsx/node_modules/ttypescript/lib/loadTypescript.js:15:5), <anonymous>:81442:9)

typescript version 3.1.6

cevek commented 5 years ago

try in your tsconfig.json

"plugins": [{ "transform": "typescript-transform-jsx", type: "raw" }]

because if you don't specify type transformer interface should be

(program: ts.Program, config?: PluginConfig) => (context: ts.TransformationContext) => (sourceFile: ts.SourceFile) => ts.SourceFile

https://github.com/cevek/ttypescript#pluginconfigtype

danielpza commented 5 years ago

It worked, thanks very much for the quick response

danielpza commented 5 years ago

@cevek , Should I make a PR to add my transform to ttypescript readme ?, do you know of any list of typescript transforms out there ?

cevek commented 5 years ago

it's done check it out readme

danielpza commented 5 years ago

Wow, that was fast, thanks again