簡體   English   中英

從應用程序根目錄導入/需要的NPM依賴項

[英]NPM dependency that imports/requires from the app's root

假設我創建了一個名為App的應用App 它安裝了一個名為package的npm依賴項。

現在,假設package要求App具有以下文件結構:

  • 應用/
    • node_modules /
      • 包/
        • index.js
        • 的package.json
    • 夾/
      • file.js
    • index.js
    • 的package.json

App/node_modules/package/index.js ,它需要導入/獲取位於App/folder/file.js

例如:

import File from "../../folder/file";

這是最好的方法嗎? 有什么方法可以在導入中引用應用程序的根目錄,而不需要使用../../嗎?

不,這不是最好的方法。 模塊不應來自其用戶。

請改用依賴項注入-讓用戶為您傳遞所需的對象:

包/ index.js

let File = null;

function init (fileModule) {
    File = fileModule;
}

export init;

// ...

這樣,您可以從主應用程序傳遞File對象:

應用/ index.js

import { init } from 'package';
import File from './folder/file';

init(File);

您將如何設計API以傳遞“中間件”。 以上僅是一個建議。 您可以將其作為參數傳遞給構造函數,例如:

const package = new Package(File);

實際上,這就是Express等框架的工作方式。 它允許Express在不知道代碼結構的情況下進行擴展:

app.use(someMiddleware); // Express never "requires" your middleware
                         // instead it allows you to pass middleware to itself

暫無
暫無

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

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