我有一個使用CommonJS模塊風格的鈦項目。但是,代碼使用絕對路徑,以便在構建絕對路徑時將其沙箱化爲應用程序目錄。你如何強制節點模塊的絕對路徑?
var foo = require("/lib/module");
我想在命令行上運行一些測試並使jasmine-node工作。但是,當一個測試執行一個模塊時,模塊在它們的require語句中將具有上述絕對路徑。
有沒有辦法隔離(也許是chroot)節點來解析絕對需要路徑到特定的目錄?如果是這樣如何?
-- RepositoryRoot/
|- app/
| \- Resources/
| |- app.js # Has require("/lib/module1.js")
| \- lib/
| |- module1.js # Has require("/lib/module2.js")
| \- module2.js
\- tests/
\- module1.spec.js # Has require("../app/Resources/lib/module1")
# Or require("/lib/module1")
你可以寫你自己的需要的功能,或者只是_not_那樣做。 –
到目前爲止,我試圖使用[proxyquire](https://github.com/thlorenz/proxyquire)除了被測試的模塊開發了循環依賴關係之外,哪些工作。我真的很想避免更改代碼,希望能夠悄悄地在其上運行測試。不幸的是,到目前爲止唯一能找到的解決方案是運行每個源文件並刪除前導斜槓,然後將NODE_PATH設置爲Resources目錄。 [本博文](http://titaniumninja.com/testing-titanium-mobile-applications-with-jasmine-and-sinon-part-i/)提供了一些見解。 – Sukima
這是你繼承的第三方代碼嗎?爲什麼這樣編碼? –