簡體   English   中英

要求使用規范或根相對路徑的NodeJS中的文件

[英]Require a file in NodeJS using a canonical or root-relative path

我有一個虛構的實用程序包(節點模塊),我將其導入到我的應用程序中,如下所示:

var sqrt = require('common-math').sqrt

但是,在common-math模塊中使用同一模塊似乎很棘手。 我似乎只需要選擇,兩者都不理想:

  • 從我需要訪問模塊的每個地方使用相對路徑要求。 這可以是require('../sqrt')require('../../../lib/sqrt')
  • 將模塊放入node_modules/sqrt/index.js ,然后執行require('sqrt')

我只希望能夠像這個包的所有使用者一樣require('common-math').sqrt 我意識到我可以使用指向我包的index.js的符號鏈接創建一個node_modules/common-math文件夾,但這是常見/推薦的做法嗎?

Node的模塊加載系統非常有限,但是您想要的是可能的。 但是,它並不像您期望的那樣優雅:

var root = (function (p, path) {
        for (; 'common-math' !== path.basename(p); p = path.dirname(p));
        return p;
    }(module.filename, require('path'));

var a = require(root + '/sqrt.js');

甚至:

var root = (function (p) {
        return p.slice(0, p.indexOf('common-math') + 1).join('/');
    }(module.filename.split('/')));

var a = require(root + '/sqrt.js');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM