2017-08-02 244 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. 引发 “找不到”

相关问题