Open RebeccaStevens opened 3 years ago
I'd recommend using a stable version of TS. We won't test the plugin against it until they release a stable. You might also want to try that locally to see if it's reproducible.
Yes, it reproducible locally.
I am also able to reproduce this issue. 4.4-beta works but 4.4-rc (and the nightly 4.5.0-dev.20210824) hangs indefinitely.
Good info. We'll welcome triage on this, but until a stable release is cut from the TypeScript folks, the core team here likely won't troubleshoot this. We'll have to wait for a stable release to merge any fixes as well.
Thanks, I understand. Just wanted to give a heads up that this issue is reproducible on the stable TypeScript 4.4.2 that was just released.
Can confirm this is an issue with stable TypeScript 4.4.2. If a developer was to create a new rollup + typescript project today it would hang on compilation.
Running my (hanging) build (with an empty file to bundle) using why-is-node-running
produces this output:
There are 13 handle(s) keeping the process running
# Timeout
node:internal/async_hooks:205
node:internal/async_hooks:495
node:internal/timers:162
node:internal/timers:196
/project/rollup.config.js:16 - dir: "build",
node:internal/modules/cjs/loader:1101
/project/node_modules/rollup/dist/shared/loadConfigFile.js:540 - module._compile(bundledCode, requiredFileName);
node:internal/modules/cjs/loader:981
# TTYWRAP
node:internal/async_hooks:205
node:internal/bootstrap/switches/is_main_thread:47
node:internal/bootstrap/switches/is_main_thread:135
node:internal/console/constructor:216
node:internal/console/constructor:333
node:internal/console/constructor:368
/project/node_modules/rollup/dist/bin/rollup:1506 - loadConfigFile_js.stderr(loadConfigFile_js.cyan(`\n${loadConfigFile_js.bold(inputFiles)} → ${loadConfigFile_js.bold(files.join(', '))}...`));
/project/node_modules/rollup/dist/bin/rollup:1692 - await build(inputOptions, warnings, command.silent);
# STATWATCHER
node:internal/async_hooks:205
node:internal/fs/watchers:105
/project/node_modules/typescript/lib/typescript.js:7670 - _fs.watchFile(fileName, { persistent: true, interval: pollingInterval }, fileChanged);
/project/node_modules/typescript/lib/typescript.js:6924 - watcher: watchFile(fileName, function (fileName, eventKind) { return ts.forEach(callbacksCache.get(path), function (cb) { return cb(fileName, eventKind); }); }, pollingInterval, options),
/project/node_modules/typescript/lib/typescript.js:7247 - return pollingWatchFile(fileName, callback, PollingInterval.Low, /*options*/ undefined);
/project/node_modules/typescript/lib/typescript.js:110912 - watchFile: function (file, callback, pollingInterval, options) { return host.watchFile(file, callback, pollingInterval, options); },
/project/node_modules/typescript/lib/typescript.js:110938 - factory[key].call(/*thisArgs*/ undefined, file, cb, flags, options, detailInfo1, detailInfo2) :
/project/node_modules/typescript/lib/typescript.js:118559 - return watchFile(file, function (fileName, eventKind) { return callback(fileName, eventKind, path); }, pollingInterval, options, watchType);
# STATWATCHER
node:internal/async_hooks:205
node:internal/fs/watchers:105
/project/node_modules/typescript/lib/typescript.js:7670 - _fs.watchFile(fileName, { persistent: true, interval: pollingInterval }, fileChanged);
/project/node_modules/typescript/lib/typescript.js:6924 - watcher: watchFile(fileName, function (fileName, eventKind) { return ts.forEach(callbacksCache.get(path), function (cb) { return cb(fileName, eventKind); }); }, pollingInterval, options),
/project/node_modules/typescript/lib/typescript.js:7247 - return pollingWatchFile(fileName, callback, PollingInterval.Low, /*options*/ undefined);
/project/node_modules/typescript/lib/typescript.js:110912 - watchFile: function (file, callback, pollingInterval, options) { return host.watchFile(file, callback, pollingInterval, options); },
/project/node_modules/typescript/lib/typescript.js:110938 - factory[key].call(/*thisArgs*/ undefined, file, cb, flags, options, detailInfo1, detailInfo2) :
/project/node_modules/typescript/lib/typescript.js:118559 - return watchFile(file, function (fileName, eventKind) { return callback(fileName, eventKind, path); }, pollingInterval, options, watchType);
[... 9 more # STATWATCHER]
It seems to me that TypeScript is keeping open a few watchers... I added a few console.log
at typescript.js:7670
and it seems that Typescript creates a lot of watchers and does not unregister all of them (383/394 in my case, which is consistent with the 11 STATWATCHER
in the output). Analyzing the output, it seems that the watchers for the package.json
s of the @types
packages are not properly closed (package.json
s are only loaded from @types
packages in my output and all 11 of them are not closed):
Set(11) {
'/project/common/node_modules/@types/pouchdb-core/package.json',
'/project/common/node_modules/@types/pouchdb-find/package.json',
'/project/node_modules/@types/pouchdb-core/package.json',
'/project/node_modules/@types/pouchdb-find/package.json',
'/project/server/node_modules/@types/benchmark/package.json',
'/project/server/node_modules/@types/debug/package.json',
'/project/server/node_modules/@types/express-serve-static-core/package.json',
'/project/server/node_modules/@types/node/package.json',
'/project/server/node_modules/@types/pouchdb-core/package.json',
'/project/server/node_modules/@types/pouchdb-find/package.json',
'/project/server/node_modules/@types/serve-static/package.json',
}
Does this look like a @rollup/plugin-typescript
or a TypeScript bug?
@michael42 It might be worth opening an issue on typescript's repo with your findings.
Same issue for me on 4.4.2
test.ts:
export const name = "test"
rollup.config.js:
export default {
input: 'src/test.ts',
output: {
sourcemap: true,
format: 'iife',
name: 'test',
file: 'public/dist/test.js'
},
plugins: [
typescript()
]
}
Note: tsc src/test.ts
works fine
Update: Downgrading typescript to 4.1.6 fixes the issue. Will wait for 4.4.3
It'll be fixed with TypeScript 4.4.3. See microsoft/TypeScript#45633.
@RebeccaStevens since this is a confirmed issue with TypeScript itself I believe this issue can be closed.
Closing due to this being an upstream bug.
Same error, downgrade to typescript@4.3.5
also work.
Reopening this since we've got a number of people struggling to search issues and we're seeing an increase in duplicates on this one.
Please do not add "same here," "me too", "+1" replies to this issue.
@andrewbranch Any chance that path version is going to be released soon? It seems this issue is gathering some massive attention.
Please do your homework before pinging maintainers (those folks are stupid busy). He already addressed that here: https://github.com/microsoft/TypeScript/pull/45642#issuecomment-912694339
Please ask TypeScript maintainers questions in associated TypeScript project PRs or Issues.
Expected Behavior
The build should complete.
Actual Behavior
The build hangs. (The cli command never completes.)