找不到模块相对path

我写了一个非常简单的本地模块来pipe理几行本地化文本。 它使用节点的require来加载语言文件,但我很有可能遇到path问题。 我得到Cannot find module错误。

文件结构

 . +-- local_modules | +-- lang | | +-- package.json | | +-- index.js +-- locale | +-- en.js | +-- de.coffee +-- init.js +-- index.coffee +-- package.json 

相关的模块代码

如果文件尚未加载,应该require文件。

 join = require('path').join; _config.path = './locale'; lang = 'en'; _locales = {}; if(!_locales[lang]){ _locales[lang] = require(join(_config.path, lang)); } 

locale目录中的每个文件都是一个典型的Node.js模块,例如en.js

 module.exports = { test: 'Hello World!' }; 

本地模块导出一个用作Express中间件的function(req, res, next){} ,应该将需要的对象与本地化的string连接到res.locals ,但是,我看到Cannot find module 'locale/en'错误。

我试图手动添加.js扩展名(但是,据我所知,这不应该是必需的)。 我也尝试了path上的不同变体,如locale/locale


该模块在index.coffeeindex.coffee
应用程序使用init.js启动,其中包含以下内容:

 require('coffee-script/register'); require('./index'); 

也许只是模块是一个.js (模块本身没有CoffeeScript作为依赖),所以它不能加载.coffee文件? 虽然CoffeeScript应该在全球注册,还是我错了? 无论哪种方式,它也无法使用.js文件,所以我想这与path有关。

path.join()也标准化了创build的path,这可能意味着./部分总是被删除,剩下的是一个相对path。

相反,当使用path.resolve()时,它会创build一个绝对path,这就是这种情况下需要的。