找不到模块相对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.coffee
中index.coffee
。
应用程序使用init.js
启动,其中包含以下内容:
require('coffee-script/register'); require('./index');
也许只是模块是一个.js
(模块本身没有CoffeeScript作为依赖),所以它不能加载.coffee
文件? 虽然CoffeeScript应该在全球注册,还是我错了? 无论哪种方式,它也无法使用.js
文件,所以我想这与path有关。
path.join()
也标准化了创build的path,这可能意味着./
部分总是被删除,剩下的是一个相对path。
相反,当使用path.resolve()
时,它会创build一个绝对path,这就是这种情况下需要的。