babel-plugin-module-resolver icon indicating copy to clipboard operation
babel-plugin-module-resolver copied to clipboard

SyntaxError: Unexpected token 'export'

Open Pierre-Green opened this issue 5 years ago • 0 comments

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 !

Pierre-Green avatar Aug 13 '20 12:08 Pierre-Green