nodejs.go 806 B

1234567891011121314151617181920212223242526272829303132333435
  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) *types.DifySandboxResponse {
  9. runner := nodejs.NodeJsRunner{}
  10. stdout, stderr, done, err := runner.Run(code, time.Duration(static.GetDifySandboxGlobalConfigurations().WorkerTimeout*int(time.Second)), nil)
  11. if err != nil {
  12. return types.ErrorResponse(-500, err.Error())
  13. }
  14. stdout_str := ""
  15. stderr_str := ""
  16. for {
  17. select {
  18. case <-done:
  19. return types.SuccessResponse(&RunCodeResponse{
  20. Stdout: stdout_str,
  21. Stderr: stderr_str,
  22. })
  23. case out := <-stdout:
  24. stdout_str += string(out)
  25. case err := <-stderr:
  26. stderr_str += string(err)
  27. }
  28. }
  29. }