swc-project / swc-node

Faster ts-node without typecheck
MIT License
1.76k stars 73 forks source link

Class with a decorated method called "export" results in a compilation error #636

Open dmaretskyi opened 2 years ago

dmaretskyi commented 2 years ago
// test.ts

function decorator(target: any, propertyName: string, descriptor: TypedPropertyDescriptor<(...args: any) => any>) {

}

class Foo {
  @decorator
  export() {

  }
}

Running

node -r @swc-node/register src/test.ts

This throws an error:

/Users/dmytro/Projects/work/dxos/protocols/common/temp/node_modules/.pnpm/@swc+core@1.2.122/node_modules/@swc/core/index.js:142
            throw err;
            ^

Error: error: `export` is not allowed here

  |
7 |   export() {
  |   ^^^^^^

Caused by:
    0: failed to process js file
    1: Syntax Error
    at Compiler.transformSync (/Users/dmytro/Projects/work/dxos/protocols/common/temp/node_modules/.pnpm/@swc+core@1.2.122/node_modules/@swc/core/index.js:139:29)
    at transformSync (/Users/dmytro/Projects/work/dxos/protocols/common/temp/node_modules/.pnpm/@swc+core@1.2.122/node_modules/@swc/core/index.js:223:21)
    at transformSync (/Users/dmytro/Projects/work/dxos/protocols/common/temp/node_modules/.pnpm/@swc-node+core@1.8.2/node_modules/@swc-node/core/index.ts:69:26)
    at compile (/Users/dmytro/Projects/work/dxos/protocols/common/temp/node_modules/.pnpm/@swc-node+register@1.4.2/node_modules/@swc-node/register/register.ts:44:40)
    at exts (/Users/dmytro/Projects/work/dxos/protocols/common/temp/node_modules/.pnpm/@swc-node+register@1.4.2/node_modules/@swc-node/register/register.ts:55:31)
    at Module._compile (/Users/dmytro/Projects/work/dxos/protocols/common/temp/node_modules/.pnpm/pirates@4.0.4/node_modules/pirates/lib/index.js:130:29)
    at Module._extensions..js (node:internal/modules/cjs/loader:1138:10)
    at Object.newLoader [as .ts] (/Users/dmytro/Projects/work/dxos/protocols/common/temp/node_modules/.pnpm/pirates@4.0.4/node_modules/pirates/lib/index.js:141:7)
    at Module.load (node:internal/modules/cjs/loader:989:32)
    at Function.Module._load (node:internal/modules/cjs/loader:829:14) {
  code: 'GenericFailure'
}

tsconfig:

{
  "compilerOptions": {
    "allowJs": true,
    "composite": true,
    "incremental": true,
    "declarationMap": true,
    "esModuleInterop": true,
    "lib": [
      "ESNext"
    ],
    "jsx": "react",
    "module": "commonjs",
    "moduleResolution": "node",
    "noImplicitOverride": true,
    "resolveJsonModule": true,
    "skipLibCheck": true,
    "sourceMap": true,
    "strict": true,
    "target": "ES2018",
    "experimentalDecorators": true,
    "stripInternal": true,
  },
  "include": ["**/src/**/*.ts","**/src/**/*.tsx"],
  "exclude": ["node_modules", "dist"]
}