簡體   English   中英

為什么我不能在 node.js (browserify) 的 require() 函數中使用變量作為參數?

[英]Why can I not use a variable as parameter in the require() function of node.js (browserify)?

我試過類似的東西:

var path = '../right/here';
var module = require(path);

但它無法再通過這種方式找到模塊,而:

var module = require('../right/here');

奇跡般有效。 想使用生成的字符串列表加載模塊,但我無法解決這個問題 atm。 有任何想法嗎?

您可以使用模板動態獲取文件。

var myModule = 'Module1';
var Modules = require(`../path/${myModule}`)

這是由於 Browserify 的捆綁方式,它只能對需求重新綁定進行靜態字符串分析。 因此,如果您想進行 browserify 捆綁,則需要對您的需求進行硬編碼。

對於必須進入生產部署的代碼(與快速原型相反,您很少費心為其添加捆綁)始終建議堅持靜態需求,部分原因是捆綁,但也因為使用動態字符串為您提供您的要求意味着您正在編寫不可預測的代碼,因此可能充滿了您很少遇到且極難調試的錯誤。

如果您需要基於不同運行的不同要求(例如,開發與階段測試與生產),那么使用process.env或配置對象通常是個好主意,以便在決定需要哪個庫時具體目的,你可以使用類似的東西

var knox = config.offline ? require("./util/mocks3") : require("knox");

這樣,您的代碼也可以立即被其他需要追蹤哪里出錯的人遍歷,以防確實發現了錯誤。

require('@/path/'.concat(fileName))

您可以使用.require()添加要訪問的文件,計算其路徑而不是在構建時是靜態的,這樣這些模塊將被包含在內,並且稍后調用require()時會找到它們。

暫無
暫無

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

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