2016-11-10 94 views
0

我有一个ExpressJS项目,我想在另一个项目中使用.js模块。我使用require来获取.js模块,但由于路径不正确,无法找到模块。如何查看或查找本地模块的正确路径。如何在使用require时找到.js文件的正确路径

这里是我的项目层次/结构 enter image description here

这就是我里面programController.js尝试 - 还有一点我不太明白用“”在路径字符串中。

var Program = require('.././program.js'); 
var FinishProgram = require('.././finishProgram'); 
+0

在您的例子这将是'../../机型/ program'。但是当你开始使用这样的路径时,它并不好。我倾向于使用我自己的应用程序node_modules。 – Keith

回答

2

路径中的. and .. notation表示路径相对于到它们所需的文件。相同的目录该文件是在内部(也被称作当前工作目录)

.. - - 当前目录的父目录内

含义...通配符

.

将这些数字的倍数一起使用时,会创建相对路径模式。因此,对于programController.js访问program.js你的路径应该是

var Program = require('../../models/program');

这条道路意味着,涨2个文件夹到App目录,并找到models文件夹,然后加载文件program.js

遵循相同的规则,你也可以访问finishProgram.js

var FinishProgram = require('../../models/finishProgram');

+0

感谢您的回答@peteb,它的工作原理!但我无法弄清楚这个路径字符串是如何工作的。在app_server里面 - > routes - > route.js我需要app_server中的所有控制器 - > controllers - > .js - require需要怎么样? –

+0

您是否要求所有这些文件都在单个“require”中,或者您是否在为要包含的每个控制器文件执行1'require'? – peteb

+0

1需要route.js文件中的每个控制器 –

1

.代表当前目录,在您的情况下是多余的。

路径是简单的相对路径,用于确定如何导航到所需的文件。

这应该为你工作:

var Program = require('../../models/program'); 
var FinishProgram = require('../../models/finishProgram'); 

注意,扩展.js不是必需的。

相关问题