2017-08-02 191 views
-1

的Node.js - 8.2.1如何在js文件中獲取文件夾「node_modules」的路徑?

我我index.js我硬編碼路徑node_modules

'使用嚴格的';

var NPM_NODE_MODULES_BASE_DIR = 'd:\\Programs\\nodejs\\node_modules\\npm\\node_modules\\' 

var express = require(NPM_NODE_MODULES_BASE_DIR + '\express'), 
    bodyParser = require(NPM_NODE_MODULES_BASE_DIR +'body-parser'); 

var app = express(); 
app.use(bodyParser.urlencoded({extended: true})); 

但它不是很好,因爲代碼是不便攜的。我如何獲得Node.js的文件夾node_modules的路徑?

+0

只是使用'要求( '表達')爲什麼不能使用「像其他人一樣?這似乎是一個更大的問題,那就是爲什麼你的系統配置不當,以至於你只能在你安裝的模塊上使用'require()'而沒有路徑。我沒有在我的require()語句中使用路徑。 – jfriend00

+0

在Windows上如何正確配置系統? – Alex

回答

0

不用全局安裝npm模塊,只要將它們安裝到src文件夾中,無論何時在src文件夾中,並執行npm安裝,它都應該安裝在src文件的本地npm模塊文件夾中,可以使用--save將其添加到您的依賴項,以便您可以在初始化節點項目時獲取它

+0

這不好。如果我在每個項目中都有10個項目,我就擁有「Express」,「body-parser」等相同的模塊。它是重複的 – Alex

0

以下是nodejs當前主分支源文檔[doc/api/modules.md]的摘錄...

... require.resolve()所做的僞代碼中的高級算法:

需要(X)從模塊在路徑ý

  1. 如果X是一個核心模塊, 一個。返回核心模塊

    b。 STOP

  2. 如果X以'/' 開始a。集合Y是文件系統根目錄

  3. 如果X始於 './' 或 '/' 或 '../'

    一個。 LOAD_AS_FILE(Y + X)

    b。 LOAD_AS_DIRECTORY(Y + X)

  4. LOAD_NODE_MODULES(X,目錄名(Y))

  5. 引發 「找不到」

相關問題