Skip to content

Commit 65a0daf

Browse files
committed
fix
1 parent ee50c71 commit 65a0daf

3 files changed

Lines changed: 30 additions & 7 deletions

File tree

server/npmrc.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -423,8 +423,8 @@ func (npmrc *NpmRC) installPackageContext(ctx context.Context, pkg npm.Package)
423423
return
424424
}
425425

426-
func (npmrc *NpmRC) installDependencies(wd string, pkgJson *npm.PackageJSON, npmMode bool, mark *set.Set[string]) {
427-
_ = npmrc.installDependenciesContext(context.Background(), wd, pkgJson, npmMode, mark)
426+
func (npmrc *NpmRC) installDependencies(wd string, pkgJson *npm.PackageJSON, npmMode bool, mark *set.Set[string]) error {
427+
return npmrc.installDependenciesContext(context.Background(), wd, pkgJson, npmMode, mark)
428428
}
429429

430430
func (npmrc *NpmRC) installDependenciesContext(ctx context.Context, wd string, pkgJson *npm.PackageJSON, npmMode bool, mark *set.Set[string]) error {
@@ -454,8 +454,13 @@ func (npmrc *NpmRC) installDependenciesContext(ctx context.Context, wd string, p
454454
}
455455
errMu.Unlock()
456456
}
457+
getFirstErr := func() error {
458+
errMu.Lock()
459+
defer errMu.Unlock()
460+
return firstErr
461+
}
457462
for name, version := range dependencies {
458-
if ctx.Err() != nil || firstErr != nil {
463+
if ctx.Err() != nil || getFirstErr() != nil {
459464
break
460465
}
461466
wg.Add(1)
@@ -502,7 +507,14 @@ func (npmrc *NpmRC) installDependenciesContext(ctx context.Context, wd string, p
502507
if strings.ContainsRune(name, '/') {
503508
ensureDir(filepath.Dir(linkDir))
504509
}
505-
os.Symlink(filepath.Join(npmrc.StoreDir(), pkg.String(), "node_modules", pkg.Name), linkDir)
510+
err = os.Symlink(filepath.Join(npmrc.StoreDir(), pkg.String(), "node_modules", pkg.Name), linkDir)
511+
if err != nil && !os.IsExist(err) {
512+
setErr(err)
513+
return
514+
}
515+
} else if err != nil {
516+
setErr(err)
517+
return
506518
}
507519
// install dependencies recursively
508520
if len(installed.Dependencies) > 0 || (len(installed.PeerDependencies) > 0 && npmMode) {

server/router.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,17 @@ func esmRouter(esmStorage storage.Storage, logger *log.Logger) rex.Handle {
175175
}
176176
if len(output.Map) > 0 {
177177
output.Code = fmt.Sprintf("%s//# sourceMappingURL=+%s", output.Code, path.Base(savePath)+".map")
178-
go esmStorage.Put(savePath+".map", strings.NewReader(output.Map))
178+
err = esmStorage.Put(savePath+".map", strings.NewReader(output.Map))
179+
if err != nil {
180+
logger.Errorf("storage.put(%s): %v", savePath+".map", err)
181+
return rex.Err(500, "failed to store source map")
182+
}
183+
}
184+
err = esmStorage.Put(savePath, strings.NewReader(output.Code))
185+
if err != nil {
186+
logger.Errorf("storage.put(%s): %v", savePath, err)
187+
return rex.Err(500, "failed to store transformed code")
179188
}
180-
go esmStorage.Put(savePath, strings.NewReader(output.Code))
181189
ctx.SetHeader("Cache-Control", ccMustRevalidate)
182190
return output
183191

server/unenv.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@ func buildUnenvNodeRuntime() (err error) {
7676
if err != nil {
7777
return
7878
}
79-
npmrc.installDependencies(wd, pkgJson, false, nil)
79+
err = npmrc.installDependencies(wd, pkgJson, false, nil)
80+
if err != nil {
81+
return err
82+
}
8083

8184
endpoints := make([]esbuild.EntryPoint, 0, len(nodeBuiltinModules))
8285
for name := range nodeBuiltinModules {

0 commit comments

Comments
 (0)