andywer / andywer/threads.js

yarn v3 PNP

未关闭
#423 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
enhancement
主要语言
TypeScript
星标
3.5k
派生
173
PR 合并指标
30 天内没有已合并 PR

描述

It appears that using Yarn v3's PNP functionality causes the Worker to not load the actual file. If `nodeLinker` is set to `node-modules` in `.yarnrc.yml`, it works as expected.

This is the error I'm receiving
> Timeout: Did not receive an init message from worker after 10000ms. Make sure the worker calls expose().

The best I can tell, it's due to using `require` within the `resolveScriptPath` function. It might be worthwhile to look into [createRequire function](https://nodejs.org/api/module.html#module_module_createrequire_filename) as described in yarn's [rule book](https://yarnpkg.com/advanced/rulebook#packages-should-only-ever-require-what-they-formally-list-in-their-dependencies) on the topic
> If your package is something that automatically loads plugins (for example eslint), peer dependencies obviously aren't an option as you can't reasonably list all plugins. Instead, you should use the [createRequire function](https://nodejs.org/api/module.html#module_module_createrequire_filename) (or its [polyfill](https://github.com/nuxt-contrib/create-require)) to load plugins on behalf of the configuration file that lists the plugins to load - be it the package.json or a custom one like the .eslintrc.js file.

I haven't had a chance to debug it further, so I'm speculating the createRequire function will resolve the issue.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。