簡體   English   中英

找不到模塊 - 相對路徑

[英]Cannot find module - relative paths

我寫了一個非常簡單的本地模塊來管理幾行本地化文本。 它使用node的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.coffeeindex.coffee
應用程序使用init.js啟動,其中包含以下內容:

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

也許只是模塊是一個.js (並且模塊本身沒有CoffeeScript作為依賴項)所以它無法加載.coffee文件? 雖然CoffeeScript應該在全球注冊,或者我錯了? 無論哪種方式,它也不能與.js文件一起使用,所以我猜它與路徑有關。

path.join()還規范化創建的路徑,這可能意味着./部分總是被刪除,剩下的是相對路徑。

相反,當使用path.resolve()時,它會創建一個絕對路徑,這是本例所需的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM