File tree 2 files changed +29
-3
lines changed
2 files changed +29
-3
lines changed Original file line number Diff line number Diff line change @@ -332,10 +332,12 @@ function REPLServer(prompt,
332
332
if ( code === '\n' )
333
333
return cb ( null ) ;
334
334
335
- let pwd ;
335
+ let parentURL ;
336
336
try {
337
337
const { pathToFileURL } = require ( 'url' ) ;
338
- pwd = pathToFileURL ( process . cwd ( ) ) . href ;
338
+ // Adding `/repl` prevents dynamic imports from loading relative
339
+ // to the parent of `process.cwd()`.
340
+ parentURL = pathToFileURL ( path . join ( process . cwd ( ) , 'repl' ) ) . href ;
339
341
} catch {
340
342
}
341
343
while ( true ) {
@@ -350,7 +352,7 @@ function REPLServer(prompt,
350
352
filename : file ,
351
353
displayErrors : true ,
352
354
importModuleDynamically : async ( specifier ) => {
353
- return asyncESM . ESMLoader . import ( specifier , pwd ) ;
355
+ return asyncESM . ESMLoader . import ( specifier , parentURL ) ;
354
356
}
355
357
} ) ;
356
358
} catch ( e ) {
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+ const common = require ( '../common' ) ;
3
+ const assert = require ( 'assert' ) ;
4
+ const cp = require ( 'child_process' ) ;
5
+ const fixtures = require ( '../common/fixtures' ) ;
6
+
7
+ const args = [ '--interactive' , '--experimental-repl-await' ] ;
8
+ const opts = { cwd : fixtures . path ( 'es-modules' ) } ;
9
+ const child = cp . spawn ( process . execPath , args , opts ) ;
10
+
11
+ let output = '' ;
12
+ child . stdout . setEncoding ( 'utf8' ) ;
13
+ child . stdout . on ( 'data' , ( data ) => {
14
+ output += data ;
15
+ } ) ;
16
+
17
+ child . on ( 'exit' , common . mustCall ( ( ) => {
18
+ const results = output . replace ( / ^ > / mg, '' ) . split ( '\n' ) . slice ( 2 ) ;
19
+ assert . deepStrictEqual ( results , [ '[Module] { message: \'A message\' }' , '' ] ) ;
20
+ } ) ) ;
21
+
22
+ child . stdin . write ( 'await import(\'./message.mjs\');\n' ) ;
23
+ child . stdin . write ( '.exit' ) ;
24
+ child . stdin . end ( ) ;
You can’t perform that action at this time.
0 commit comments