Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mocha tests for React (jsx) aren't parsed as jsx if test filename has .js extension #684

Open
yairEO opened this issue Jan 19, 2023 · 2 comments

Comments

@yairEO
Copy link

yairEO commented Jan 19, 2023

Hi, This is a clone of an issue i've opened on the main SWC repo

It might be better suited for this repo than the main SWC one.


Repo - https://github.com/yairEO/swc-js-extension-fails-with-jsx-content

Describe the bug

Hi, I am trying to convert a large project from Mocha + babel to Mocha + SWC, but get errors if the test file extension ends with .js and not .jsx. I have hundreds of files like this.

Renaming one of them makes SWC compile it correctly, but I really prefer keeping the tests files with the .js extension.

the project is based on React v16, so every component and its test file has the React import:

import React from 'react';

I would assume SWC would be smart enough to automatically know the content of the file is JSX...

Input code

No response

Config

{
    "$schema": "https://json.schemastore.org/swcrc",
    "jsc": {
      "parser": {
        "syntax": "ecmascript",
        "jsx": true,
        "dynamicImport": false,
        "privateMethod": true,
        "functionBind": false,
        "exportDefaultFrom": true,
        "exportNamespaceFrom": false,
        "decorators": true,
        "decoratorsBeforeExport": true,
        "topLevelAwait": false,
        "importMeta": false
      },
      "transform": {
        "legacyDecorator": true,
        "react": {
          "pragma": "React.createElement",
          "pragmaFrag": "React.Fragment",
          "throwIfNamespace": true,
          "development": false,
          "useBuiltins": false
        },
        "optimizer": {
          "globals": {
            "vars": {
              "__DEBUG__": "true"
            }
          }
        }
      },
      "target": "es5",
      "loose": false,
      "externalHelpers": false,
      // Requires v1.2.50 or upper and requires target to be es2016 or upper.
      "keepClassNames": false
    },
    "minify": false
}

Expected behavior

Should transpile JSX for .js files automatically

Actual behavior

No response

Version

1.5.5

Additional context

Am using these packages:

"@swc-node/register": "1.5.5",
"swc": "1.0.11",
"mocha": "9.2.2",

Running the tests with this .mocharc:

{
  "exit": true,
  "color": true,
  "require": ["@swc-node/register", "test/register.js", "test/setup.js"],
  "ignore": "node_modules"
}
@yairEO
Copy link
Author

yairEO commented Feb 16, 2023

Any news please? I really really want this to be solved :)

@kryops
Copy link

kryops commented Feb 22, 2023

We have a related issue after an upgrade that @swc-node/register does not parse .js files as JSX, even through we declare jsx: 'react' in our register() call. The workaround for us however is to downgrade to 1.5.5 😅

Could this be caused by af643b8 ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants