假设我有这个目录结构(不是真正的文件名):
app/
collections/
col.one.js
col.two.js
models/
model.js
main.js
col.one.js
和col.two.js
都需要model.js
。但是,似乎都没有解决相对路径。两个集合都包含行var model = require('../models/model')
但由于某种原因,Node继续在集合目录中查找该文件并提供错误Error: Cannot find module './models/model'
。
这是model.js
var MyModel = module.exports.MyModel = function() {};
MyModel.prototype.myFunc = function(data) {
this.data = data;
return this;
};
我尝试过以不同方式引用model.js,但似乎没有任何效果。我是Node的新手,所以我觉得我错过了一些非常基本的东西。
谢谢:)
答案 0 :(得分:0)
当require()
其他(本地)节点文件时,这里有两个提示:
指定完整的文件名,包括“.js”。在这种情况下,您的代码应如下所示:var model = require('../models/model.js')
本地目录默认搜索index.js
。因此,如果您将/models/model.js
重命名为/models/index.js
,则可以执行此操作:var model = require('../models')
,并且节点将默认查找index.js
。
这仅适用于require()
调用,因此请确保您正在导出,并正确引用导出。