-
-
Notifications
You must be signed in to change notification settings - Fork 250
Description
Brief
Following setup freezes:
concurrently "vite" "tsx watch index.ts"index.ts
console.log("hello world");
import "mysql2"hello world does not log before app freezes.
Works:
# terminal 1:
vite
# terminal 2:
tsx watch index.tsOr:
index.ts
console.log("hello world");
// import "mysql2"Detailed Explanation
I was using concurrently with the mysql2 package, with tsx watch to run my code and watch for changes. At some point, it started freezing completely on startup. I even added a console.log at the very beginning of the entry point script that would not even print, which made me think it was an import issue (since I think imports run even before that console.log).
After disabling various parts of code, I finally disabled my import for mysql2 and it started running again. But, even if I did not use the value imported, just having the import "mysql2" by itself would cause it to freeze.
Finally, I tried running the two-part application without concurrently and just in separate terminals, and it worked fine, with the mysql2 import and everything.
I presume this is an issue with concurrently, mysql2, and tsx watch since it works fine if I remove any one of these three dependents (using tsx not in watch mode also works). I switched to npm-run-all and it works fine now. Not sure exactly what mysql2 is doing as a side-effect, or what breaks it when using concurrently.
Environment
OS: Windows 10 x64
Terminal: Powershell integrated in VSCode 1.96.2
Minimal Example
I've reproduced this issue with two files:
- The following minimal
package.json:
{
"name": "test",
"version": "0.0.1",
"scripts": {
"dev": "concurrently \"vite\" \"tsx watch index.ts\"",
"dev-nowatch": "concurrently \"vite\" \"tsx index.ts\"",
"dev-index": "tsx watch index.ts"
},
"dependencies": {
"mysql2": "^3.12.0"
},
"devDependencies": {
"concurrently": "^9.1.2",
"tsx": "^4.19.2",
"typescript": "~5.6.2",
"vite": "^6.0.5"
}
}- The following file,
index.ts:
console.log("hello world");
import "mysql2";With these files, run:
npm iThe following shows that hello world does not log as expected:
npm run devThe following commands show that it does print when not using concurrently or when not using watch mode:
npm run dev-nowatch
npm run dev-indexAlso try commenting out import "mysql2" to see that this also works:
console.log("hello world");
// import "mysql2"