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

Node.js 22.12.0以降においてbackend test(e2e)が実行できない (node側の仕様変更の影響かも) #15308

Open
1 task
Sayamame-beans opened this issue Jan 18, 2025 · 6 comments
Labels
🐛Bug Unexpected behavior 🛠️Dev Development of Misskey itself packages/backend:test

Comments

@Sayamame-beans
Copy link
Member

💡 Summary

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Jest: Got error running globalSetup - /<略>/misskey/packages/backend/built-test/entry.js, reason: No "exports" main defined in /<略>/misskey/packages/backend/node_modules/file-type/package.json
のようになります。
関連?: sindresorhus/file-type#723

sindresorhus/file-type#696 (comment) に基づいて書き換えてみると、file-typeでのエラーはなくなり、代わりにmisskey-jsにおいて同様のエラーが表示されることが確認できました。(未確認ですが、恐らくその他でも発生するのではないかと予想します。)

GitHub Actionsでは現在は22.11.0が使用されていたので、そちらに変更すると正常に実行できました。22.12または22.13での何らかの変更点が影響していると考えられます。

🥰 Expected Behavior

e2eテストが実行出来る

🤬 Actual Behavior

e2eテストが実行出来ない

📝 Steps to Reproduce

  1. https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md#testing に従い、Single-server E2E testsを実行しようとする
  2. pnpm --filter backend test:e2eの実行で前述のエラー

💻 Frontend Environment

* Model and OS of the device(s):
* Browser:
* Server URL:
* Misskey:

🛰 Backend Environment (for server admin)

* Installation Method or Hosting Service: git
* Misskey: https://github.com/misskey-dev/misskey/pull/15271 branch
* Node: 22.13.0, 22.11.0
* PostgreSQL: from docker image
* Redis: from docker image
* OS and Architecture: Ubuntu 24.04.1 LTS on Windows 10 x86_64

Do you want to address this bug yourself?

  • Yes, I will patch the bug myself and send a pull request
@KisaragiEffective
Copy link
Collaborator

https://nodejs.org/ja/blog/release/v22.12.0

require(esm) is now enabled by default

これかも

@anatawa12
Copy link
Member

v22.12.0で発生することが確認できたので require esm の可能性がまぁありそうですね

(なんで LTS でそんな壊れることしてくるん?)

@Sayamame-beans Sayamame-beans changed the title Node.js 22.13.0においてbackend test(e2e)が実行できない(node側の仕様変更の影響?) Node.js 22.12.0以降においてbackend test(e2e)が実行できない (node側の仕様変更の影響かも) Jan 18, 2025
@Sayamame-beans
Copy link
Member Author

タイトルを変更

@anatawa12
Copy link
Member

--no-experimental-require-moduleを渡すことでエラーは発生しなくなりましたね

@u1-liquid
Copy link
Contributor

FYI: MisskeyIO@eecc6a0

@anatawa12
Copy link
Member

anatawa12 commented Jan 18, 2025

調べた感じ、 jest は esmodule を commonjs に変換するので、 require(esm) の影響を受けたようです。

そして、 require(esm) の解決時にはなぜか package.json の exports では "import" ではなく、 "require" ("default") が解決で使用されているようです。
これが node.js のバグとするべきかは要議論 on nodejs だと思ってるので issue を探すか、作成しようとおもいます。

試しに jest の esmodule support を有効に(というかtransformの無効化)してみましたが、jest が esmodle としてではなく普通に require する模様で、 pkce-challenge が top level await 使って(cryptoを条件付きで import して)いるため、うまく動きませんでした。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛Bug Unexpected behavior 🛠️Dev Development of Misskey itself packages/backend:test
Projects
Development

No branches or pull requests

4 participants