我正在尝试从另一个模块./routes/exchange.js
加载自定义模块./routes/socketRouter.js
。它抛出
module.js:340
throw err;
^
Error: Cannot find module './routes/exchange'
从app.js(在根目录中)完成的同一个调用require('./routes/exchange)
是成功的!
是否存在一个限制,阻止调用需要在app.js以外的其他地方?
我已尝试过许多不同的路径,例如:
require('./routes/exchange.js')
,require('exchange')
,require('exchange.js')
谢谢!
答案 0 :(得分:0)
require('./exchange')
这会将模块加载到与您需要的源模块相同的目录中。
require('exchange')
只会加载模块,如果它位于基础node_modules
目录中。
答案 1 :(得分:0)
当需要来自客户模块和文件时,您可以提供文件的相对路径。所以使用以下结构
./my-app
app.js
routes/
exchange.js
socketRouter.js
some-folder/
some-file.js
现在,当exchange.js
包含app.js
时,你会使用require('./routes/exchange')
当你从socketRouter.js中包含它时,你会把它放在同一个文件夹中,所以require('./excahnge')
。
为了清楚起见,当想要包含some-file.js中的exchange.js时,您会将其引用为require('../routes/exchnage')
(注意,当通过require调用它时,.js扩展名是可选的,如果exchange是一个文件夹,那么它将从该文件夹加载index.js文件,参见http://nodejs.org/api/modules.html#modules_file_modules和http://nodejs.org/api/modules.html#modules_folders_as_modules)< / p>