我写了一个非常简单的本地模块来管理几行本地化文本。
它使用节点require
加载语言文件,但我很可能遇到路径问题。
我收到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!'
};
本地模块导出function(req, res, next){}
,它被用作Express中间件
要将带有本地化字符串的所需对象附加到res.locals
,但是,我发现Cannot find module 'locale/en'
错误。
我已尝试手动添加.js
扩展程序(但就我所知,这不应该是必要的)。
我还尝试了路径上的不同变体,例如locale
或/locale
。
该模块在index.coffee
中调用
应用程序使用init.js
启动,其中包含以下内容:
require('coffee-script/register');
require('./index');
可能只是模块是.js
(并且模块本身没有将CoffeeScript作为依赖项),因此它无法加载.coffee
文件?虽然CoffeeScript应该在全球注册,或者我错了?无论哪种方式,它都不能与.js
文件一起使用,所以我猜它与路径有关。
答案 0 :(得分:1)
path.join()
也会对创建的路径进行规范化,(可能)表示./
部分始终被移除,剩下的是相对路径。
相反,当使用path.resolve()
时,它会创建一个绝对路径,这就是本例所需的路径。