节点需要相同路径在相同的应

时间:2014-03-04 14:10:38

标签: javascript node.js

假设我有这个目录结构(不是真正的文件名):

app/
    collections/
        col.one.js
        col.two.js
    models/
        model.js
    main.js

col.one.jscol.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的新手,所以我觉得我错过了一些非常基本的东西。

谢谢:)

1 个答案:

答案 0 :(得分:0)

require()其他(本地)节点文件时,这里有两个提示:

  1. 指定完整的文件名,包括“.js”。在这种情况下,您的代码应如下所示:var model = require('../models/model.js')

  2. 本地目录默认搜索index.js。因此,如果您将/models/model.js重命名为/models/index.js,则可以执行此操作:var model = require('../models'),并且节点将默认查找index.js

  3. 这仅适用于require()调用,因此请确保您正在导出,并正确引用导出。