nodejs.go 916 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package service
  2. import (
  3. "time"
  4. "github.com/langgenius/dify-sandbox/internal/core/runner/nodejs"
  5. "github.com/langgenius/dify-sandbox/internal/static"
  6. "github.com/langgenius/dify-sandbox/internal/types"
  7. )
  8. func RunNodeJsCode(code string, preload string) *types.DifySandboxResponse {
  9. timeout := time.Duration(static.GetDifySandboxGlobalConfigurations().WorkerTimeout * int(time.Second))
  10. runner := nodejs.NodeJsRunner{}
  11. stdout, stderr, done, err := runner.Run(code, timeout, nil, preload)
  12. if err != nil {
  13. return types.ErrorResponse(-500, err.Error())
  14. }
  15. stdout_str := ""
  16. stderr_str := ""
  17. defer close(done)
  18. defer close(stdout)
  19. defer close(stderr)
  20. for {
  21. select {
  22. case <-done:
  23. return types.SuccessResponse(&RunCodeResponse{
  24. Stdout: stdout_str,
  25. Stderr: stderr_str,
  26. })
  27. case out := <-stdout:
  28. stdout_str += string(out)
  29. case err := <-stderr:
  30. stderr_str += string(err)
  31. }
  32. }
  33. }