From 3a9fd3c074cf747085d42ed89b7b24d7323f2eb7 Mon Sep 17 00:00:00 2001 From: Mike Chen <95748110+chenchen100@users.noreply.github.com> Date: Thu, 13 Apr 2023 23:21:49 +0800 Subject: [PATCH] Fix path errors on Windows systems (#1368) * Add docs to repl with attr src * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix path errors on Windows systems * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix path errors on Windows systems --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- pyscriptjs/directoryManifest.mjs | 13 +++++++++++-- pyscriptjs/esbuild.mjs | 5 +++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/pyscriptjs/directoryManifest.mjs b/pyscriptjs/directoryManifest.mjs index 4fb5756c..ef8a1000 100644 --- a/pyscriptjs/directoryManifest.mjs +++ b/pyscriptjs/directoryManifest.mjs @@ -2,7 +2,7 @@ // 1. esbuild.mjs // 2. Jest setup.ts -import { join } from 'path'; +import path, { join } from 'path'; import { opendir, readFile } from 'fs/promises'; /** @@ -38,7 +38,16 @@ async function _directoryManifestHelper(root, dir, result) { result.dirs.push(entry); await _directoryManifestHelper(root, entry, result); } else if (d.isFile()) { - result.files.push([entry, await readFile(join(root, entry), { encoding: 'utf-8' })]); + result.files.push([normalizePath(entry), await readFile(join(root, entry), { encoding: 'utf-8' })]); } } } + +/** + * Normalize paths under different operating systems to + * the correct path that will be used for src on browser. + * @param {string} originalPath + */ +function normalizePath(originalPath) { + return path.normalize(originalPath).replace(/\\/g, '/'); +} diff --git a/pyscriptjs/esbuild.mjs b/pyscriptjs/esbuild.mjs index f455f314..5d844265 100644 --- a/pyscriptjs/esbuild.mjs +++ b/pyscriptjs/esbuild.mjs @@ -1,11 +1,12 @@ import { build } from 'esbuild'; import { spawn } from 'child_process'; -import { dirname, join } from 'path'; +import { join } from 'path'; import { watchFile } from 'fs'; import { cp, lstat, readdir } from 'fs/promises'; import { directoryManifest } from './directoryManifest.mjs'; +import { fileURLToPath } from 'url'; -const __dirname = dirname(new URL(import.meta.url).pathname); +const __dirname = fileURLToPath(new URL('.', import.meta.url)); const production = !process.env.NODE_WATCH || process.env.NODE_ENV === 'production';