2012-06-24 51 views
13

Tôi có tập lệnh nodejs sử dụng nút phantomjs để xóa một trang web. Nó hoạt động tốt khi tôi chạy từ một cửa sổ đầu cuối, nhưng không phải khi tôi chạy từ bên trong Webstorm thông qua một cấu hình chạy cho một ứng dụng Node JS.Tập lệnh không thành công trong Webstorm nhưng không phải từ thiết bị đầu cuối

Điều gì có thể gây ra lỗi trong Webstorm?

Tôi đã thử chạy tập lệnh từ thiết bị đầu cuối sau khi nhận xét nội dung của .bash_profile và nó vẫn hoạt động. Tôi cũng đã kiểm tra nội dung của process.env trong một tập lệnh mẫu khác và thấy rằng các giá trị hoàn toàn khác nhau trong Webstorm so với thiết bị đầu cuối.

Kịch bản:

var phantom = require('phantom'); 
phantom.create(function(ph) { 
    return ph.createPage(function(page) { 
     return page.open("http://www.google.com", function(status) { 
      console.log("opened google? ", status); 
      return page.evaluate((function() { 
       return document.title; 
      }), function(result) { 
       console.log('Page title is ' + result); 
       return ph.exit(); 
      }); 
     }); 
    }); 
}); 

ga đầu ra (chỉ hoạt động tuyệt vời!):

opened google? success 
Page title is Google 

Webstorm console đầu ra (thất bại):

/usr/local/bin/node phantom.js 
phantom stderr: execvp(): No such file or directory 


Process finished with exit code 0 
+1

Nếu bạn đang sử dụng máy Mac, hãy kiểm tra câu hỏi này: http://apple.stackexchange.com/q/51677. – CrazyCoder

Trả lời

25

Webstorm không đặt biến PATH, nhưng nó khác với biến PATH mà ứng dụng của bạn nhận được khi chạy trong thiết bị đầu cuối. Giải pháp của tôi, một hack:

  1. Loại node để đến REPL
  2. Run process.env
  3. Sao chép nội dung của giá trị PATH
  4. Thêm một biến môi trường để Webstorm gọi PATH sử dụng giá trị này. Nó sẽ ghi đè biến PATH mặc định mà Webstorm cung cấp cho ứng dụng của bạn.

Xong!

+0

Điều này cuối cùng đã giúp tôi với Rubymine có cùng một vấn đề. – forforf

+0

Bạn đang thêm biến môi trường vào webstorm như thế nào? – pgreen2

+1

@ pgreen2 vào màn hình Run/Debug Configurations, chọn cấu hình Node JS bạn đang cố sửa, sau đó ở bên phải giữa các trường như 'Path to Node' và 'Node Parameters' bạn sẽ thấy một trường có tên 'Biến môi trường '. Nhấp vào nút '...' ở đó để đưa bạn đến màn hình CRUD cho các biến môi trường cho cấu hình. – Trindaz

Các vấn đề liên quan