summaryrefslogtreecommitdiff
path: root/cli/node/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/node/mod.rs')
-rw-r--r--cli/node/mod.rs27
1 files changed, 18 insertions, 9 deletions
diff --git a/cli/node/mod.rs b/cli/node/mod.rs
index 66b0f32f1..c64ba6132 100644
--- a/cli/node/mod.rs
+++ b/cli/node/mod.rs
@@ -738,7 +738,6 @@ pub fn translate_cjs_to_esm(
// if there are reexports, handle them first
for (idx, reexport) in analysis.reexports.iter().enumerate() {
// Firstly, resolve relate reexport specifier
- // todo(dsherret): call module_resolve instead?
let resolved_reexport = resolve(
reexport,
specifier,
@@ -1039,19 +1038,29 @@ fn is_relative_specifier(specifier: &str) -> bool {
}
fn file_extension_probe(
- mut p: PathBuf,
+ p: PathBuf,
referrer: &Path,
) -> Result<PathBuf, AnyError> {
- if p.exists() && !p.is_dir() {
- Ok(p.clean())
- } else {
- p.set_extension("js");
- if p.exists() && !p.is_dir() {
- Ok(p)
+ let p = p.clean();
+ if p.exists() {
+ let mut p_js = p.clone();
+ p_js.set_extension("js");
+ if p_js.exists() && p_js.is_file() {
+ return Ok(p_js);
+ } else if p.is_dir() {
+ return Ok(p.join("index.js"));
} else {
- Err(not_found(&p.clean().to_string_lossy(), referrer))
+ return Ok(p);
+ }
+ } else {
+ let mut p_js = p.clone();
+ p_js.set_extension("js");
+ if p_js.exists() && p_js.is_file() {
+ return Ok(p_js);
}
}
+
+ Err(not_found(&p.to_string_lossy(), referrer))
}
fn not_found(path: &str, referrer: &Path) -> AnyError {