tleunen / babel-plugin-module-resolver

Custom module resolver plugin for Babel
MIT License
3.45k stars 205 forks source link

SyntaxError: Unexpected token 'export' #405

Open Pierre-Green opened 4 years ago

Pierre-Green commented 4 years ago

Hello everyone,

I'm coding a typescript project that depends on private typescript dependencies. My first step was to find a way to have the power of typescript completion on vscode. I had two solutions for that:

  1. Write module.d.ts for each of my private dependencies and transpile them into javascript.
  2. Find a way for my project to use typescript node_modules

With babel-plugin-module-resolver, I've written done this .babelrc file:

{
        "presets": ["@babel/preset-typescript", "@babel/preset-env"],
    "plugins": [
        "@babel/proposal-class-properties",
        [
            "module-resolver",
            {
                "root": ["./"],
                "alias": {
                    "@": "./srcs",
                    "private-lib1": "./node_modules/private-lib1/srcs",
                    "private-lib2": "./node_modules/private-lib2/srcs"
                }
            }
        ]
    ]
}

And I appended this to my tsconfig.json file:

       { 
                "baseUrl": "./srcs",
        "paths": {
            "@/*": ["./*"],
            "private-lib1": ["../node_modules/private-lib1/srcs/index.ts"],
            "private-lib2": ["../node_modules/private-lib2/srcs/index.ts"]
        }
    },
    "include": ["srcs", "node_modules/private-lib1", "node_modules/private-lib2"]

When a run babel I get this error:

/home/xxx/Project/node_modules/private-lib1/srcs/index.ts:1
export * from './api';
^^^^^^

SyntaxError: Unexpected token 'export'
    at wrapSafe (internal/modules/cjs/loader.js:1067:16)
    at Module._compile (internal/modules/cjs/loader.js:1115:27)
    at Module._compile (/home/xxx/Project/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Object.newLoader [as .ts] (/home/xxx/Project/node_modules/pirates/lib/index.js:104:7)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1040:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/home/xxx/Project/srcs/router/auth.ts:3:1)

So babel find the file, my completion work like a charm but babel connot transpile my dependencies. Do you know why or even better got a solution ?

This is my package.json devDependencies:

"devDependencies": {
        "@babel/cli": "^7.10.4",
        "@babel/core": "^7.10.4",
        "@babel/node": "^7.10.4",
        "@babel/plugin-proposal-class-properties": "^7.10.4",
        "@babel/plugin-transform-runtime": "^7.10.5",
        "@babel/preset-env": "^7.10.4",
        "@babel/preset-typescript": "^7.10.4",
        "@babel/runtime-corejs3": "^7.10.5",
        "babel-plugin-module-resolver": "^4.0.0",
        "babel-watch": "^7.0.0",
        "eslint": "^7.4.0",
        "eslint-config-prettier": "^6.11.0",
        "eslint-plugin-prettier": "^3.1.4"
    }

Thank you so much !