[英]execute nodejs command from wscript.run in classic asp
我正在嘗試從vbscript / classic asp頁面執行nodejs命令。 我從lessc(較少的編譯器)開始,但也需要使用其他命令。
我安裝了nodejs,並在全局命名空間中安裝了lessc(例如npm install -g less
)我可以(在服務器cmd提示符下)發出lessc並且它可以工作。
在服務器命令提示符下,我可以發出執行lessc的命令,例如:
lessc D:\\webs\\player\\Layout\\less\\app.less > D:\\webs\\player\\Layout\\less\\app.css
但是當我在vbscript中執行它時:
dim path : path = "D:\webs\player\Layout\less\"
dim shell : shell = server.createobject("WScript.Shell")
dim errCode : errCode = shell.Run("lessc " & path & "\app.less > " & path & "\app.css", 0, true)
response.write errCode
然后它什么也沒做。 替換命令使其在lessc之前運行CMD向前邁出一步:它創建一個零字節輸出文件(app.css):
dim errCode : errCode = shell.Run("CMD /C lessc " & path & "\app.less > " & path & "\app.css", 0, true)
所以看起來它沒有找到lessc
,即使它是在路徑變量中定義的; servers命令提示符下的ECHO %PATH%
顯示lessc所在的路徑。 所以我嘗試執行lessc的完整路徑,即使這似乎不起作用(沒有錯誤,沒有輸出):
dim errCode : errCode = shell.Run("CMD /C C:\Users\Administrator\AppData\Roaming\npm\lessc " & path & "\app.less > " & path & "\app.css", 0, true)
..現在很沮喪..我嘗試將lessc
本身的輸出lessc
給一個文件,並輸出一個零字節文件。 所以它正在做一些事情 ,只是不執行lessc。
call shell.Run("CMD /C C:\Users\Administrator\AppData\Roaming\npm\lessc > c:\temp\lessc.txt", 0, true)
你怎么能讓路徑變量在shell.run中工作呢? 是否有更好的方法從vbscript / classic asp執行nodejs命令服務器端? 它將成為我在使用IIS時總是忘記的那些愚蠢的小事之一,不是嗎?
好吧,經過一天的搗亂,我遇到了一個github項目,它有一個壓縮節點和較少的組合作為一個獨立的包,只需使用Shell.Run就可以很容易地執行,你不必搗亂環境變量一點都不
https://github.com/duncansmart/less.js-windows
所以,回答了我自己的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.