![](/img/trans.png)
[英]npm wont start a react app, requires a dependency: "webpack-dev-server": "3.1.14"
[英]NPM dependency that imports/requires from the app's root
假設我創建了一個名為App
的應用App
。 它安裝了一個名為package
的npm依賴項。
現在,假設package
要求App
具有以下文件結構:
在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.