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

blogview CLIのWindows環境でのパス解決について #5

Closed
realteck-ky opened this issue Sep 9, 2023 · 1 comment
Closed

Comments

@realteck-ky
Copy link

realteck-ky commented Sep 9, 2023

blogviewのCLIツールにおいてWindows環境で使用すると、正しくentryを作っていてもプレビューのページ http://localhost:8000Cannot GET / を返すという現象に遭遇しました。
同様に blogview -vpkg.version を拾えないという問題が発生していることもわかり、勝手ながら問題調査をしました。

結論としてファイルパスの解決に問題があり、現在のコードだとWindowsの場合、先頭が /C: などで始まってしまい不正なパスとなっているようでした。
解決策としては現在はurlモジュールの fileURLToPath() を使って変換をすることが推奨のようです。
nodejs/node#28114

Linuxでの動作確認はしてないので、あくまで当方ではWindows上のみの動作確認となるのですが、よければ以下の修正を取り込んでいただければと思います。
0001-Change-to-get-filepath-using-fileURLToPath.patch

diff --git a/packages/blogview/src/server/utils/helper.ts b/packages/blogview/src/server/utils/helper.ts
index e35ca56..265c2d7 100644
--- a/packages/blogview/src/server/utils/helper.ts
+++ b/packages/blogview/src/server/utils/helper.ts
@@ -1,5 +1,6 @@
 import fs from "fs";
 import path from "path";
+import { fileURLToPath } from 'node:url';
 
 export function loadJson(filepath: string) {
   try {
@@ -10,7 +11,7 @@ export function loadJson(filepath: string) {
   }
 }
 
-const dirname = path.dirname(new URL(import.meta.url).pathname);
+const dirname = path.dirname(fileURLToPath(import.meta.url));
 
 const pkgRootDir = path.join(dirname, "..", "..", "..");
@mkizka
Copy link
Owner

mkizka commented Dec 13, 2023

こちら be87f5b で取り込みました!ありがとうございます

@mkizka mkizka closed this as completed Dec 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants