Mocha tests for React (jsx) aren't parsed as jsx if test filename has .js extension
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"
}
Any news please? I really really want this to be solved :)
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 https://github.com/swc-project/swc-node/commit/af643b849c32abb58bd1c0fdf98eeeac08548e25 ?