我想檢查我的模塊是否被包含或直接運行。我怎麼能在node.js中做到這一點?node.js相當於python的if __name__ =='__main__'
205
A
回答
285
The docs描述另一種方式來做到這一點,其可以是優選的方法:
當一個文件被從節點直接運行,require.main被設置爲它的模塊。
爲了充分利用這一點,檢查該模塊是主模塊,如果是這樣,請與主代碼:
var fnName = function(){
// main code
}
if (require.main === module) {
fnName();
}
編輯:如果您在瀏覽器中使用此代碼,你會因爲「require」沒有被定義,所以得到一個「引用錯誤」。爲防止出現這種情況,請使用:
if (typeof require != 'undefined' && require.main==module) {
fnName();
}
58
if (!module.parent) {
// this is the main module
} else {
// we were require()d from somewhere else
}
編輯:如果您在瀏覽器中使用此代碼,您將收到「引用錯誤」,因爲「模塊」未定義。爲了防止這種情況,可使用:
if (typeof module != 'undefined' && !module.parent) {
// this is the main module
} else {
// we were require()d from somewhere else or from a browser
}
相關問題
- 1. if __name__ =='__main__'
- 2. 範圍if __name__ == __main__
- 3. enigma使用python-multiprocessing與if相關if __name__ =='__main__'
- 4. if __name__ ==「__main__」沒有額外的縮進:
- 5. 運行從另一個Python腳本使用IF __name__ == 「__main__」 語句
- 6. 如果__name__ ==「__main__」蟒蛇
- 7. 在python中,我如何獲得與__name__ =='__main__'相同的行爲:
- 8. 如果使用__name__ =='__main__':用於測試
- 9. 當你用cronjob運行一個Python腳本時,是__name__'__main__'嗎?
- 10. 是否存在pythonic的「if __name__ ==」__main__「:main()」的R等價物?
- 11. 'if __name__ =='後面的任何內容__main__「:'不執行
- 12. 如果__name__ ==「__main__」函數調用
- 13. 混淆兩個關鍵字:__name__與__main__
- 14. 從其他文件調用函數if __name__ ==「__main__」:
- 15. 是否有一個相當於Python對象的__name__
- 16. 如何使__name__ == '__main__' 運行模塊
- 17. 在Emacs的Python:__name__ =='__main__',但不知何故
- 18. Python的設計:代碼後,「如果__name__ == __main__」測試
- 19. Python的exec和__name__
- 20. 避免如果__name__ ==「__main__」在Python子類使用功能從父
- 21. Python:導入並初始化Argparse如果__name__ =='__main__'?
- 22. Python中的__name__,Pydev
- 23. Node.js - traceroute相當於
- 24. 紅寶石等同於Python的__main__
- 25. Pycharm'Python控制檯'中的exec(打開)函數不執行'if __name__ =='__main__'block
- 26. 如何在使用IronPython託管時將__name__設置爲'__main__'?
- 27. Apache上的web.py無法運行代碼,如果__name__ ==「__main__」:
- 28. 在執行之前在模塊中設置__name__爲'__main__'
- 29. apache mod_rewrite相當於node.js?
- 30. Node.js相當於fopen/fprintf
你總是必須檢查require.main ===模塊**不管你的函數名稱如何。 要清楚上述代碼應被修改爲: '變種fnName =函數(){// 代碼 } 如果(require.main ===模塊){ fnName(); }' –
我會用try ... catch來包裝它以獲得瀏覽器兼容性 –
@OhadCohen「try ... catch」也可能會發現真正的錯誤。我認爲最好檢查一下typeof是否需要!='undefined'。 –