搜尋

首頁  >  問答  >  主體

node.js 怎么require"绝对路径"?

//文件树

/app
  ├components
  | ├login
  | |    └index.js
  | ├video
  | |    └index.js
  | └posts
  |      └index.js
  ├config
  ├containers
  | ├login
  | |    └index.js
  | ├video
  | |    └index.js
  | └posts
  |      └index.js
  └src

比如我要在containers -> login -> index.js加载components-> login -> index.js,我要这样写:

require('../../components/login');

有没有可以直接加载绝对路径的方法?类似这样:

require('/components/login');

或者其他方案?

伊谢尔伦伊谢尔伦2874 天前711

全部回覆(3)我來回復

  • 黄舟

    黄舟2017-04-17 15:33:57

    require() 可以用絕對路徑的,可以這樣:

    var prefix = '/path/to/app';
    
    require(preifx + '/components/login');

    如樓上所說,不建議使用絕對路徑。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 15:33:57

    你需要明白的一件事情,你的node服務是放在服務端上的,哪裡來的唯一的絕對路徑(這個跟前端瀏覽器使用requirejs很一樣),只有相對路徑(相對當前伺服器而言)。

    不過可以結合__dirname 和 path 寫一個通用的方法來取路徑

    在你nodejs入口檔例如 app.js 裡面

    global.prefixPath = path.resolve(__dirname, 'XXX')

    後面使用的時候 就可以 require(global.prefixPath + 'XXX')

    https://nodejs.org/dist/lates...

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 15:33:57

    node在執行的過程中會有一個變數和一個可以產生路徑的方法:

    process.cwd() 是目前執行node指令時候的資料夾位址
    __dirname 是被執行的js 檔案的位址

    直接拼吧

    require('f:/code/components/login');
    require(path.resolve(process.cwd(), '../../components/login'));
    // ...

    回覆
    0
  • 取消回覆