1

我正在尝试./routes/exchange.js从另一个模块加载自定义模块./routes/socketRouter.js。它抛出

module.js:340
throw err;
      ^
Error: Cannot find module './routes/exchange'

require('./routes/exchange)从 app.js(在根目录中)完成的相同调用是成功的!

是否存在阻止在 app.js 之外的其他地方调用 require 的限制?

我已经尝试了许多不同的路径,例如: require('./routes/exchange.js'),,,require('exchange')require('exchange.js')

谢谢!

4

2 回答 2

0
require('./exchange')

这将在与您需要的源模块相同的目录中加载一个模块。

require('exchange')node_modules如果模块位于基本目录中,则只会加载该模块。

于 2013-04-14T22:01:45.420 回答
0

当需要客户模块和文件时,您提供文件的相对路径。所以使用以下结构

./my-app
  app.js
  routes/
    exchange.js
    socketRouter.js
  some-folder/
    some-file.js

现在,当包含exchange.jsfrom时app.js,您将使用require('./routes/exchange')当从 socketRouter.js 包含它时,您将它在同一个文件夹中,所以require('./excahnge').

为清楚起见,当想要从 some-file.js 中包含 exchange.js 时,您可以将其引用为require('../routes/exchnage')

(注意,.js 扩展名在通过 require 调用时是可选的,如果 exchange 是一个文件夹,那么它将从该文件夹加载 index.js 文件,请参见http://nodejs.org/api/modules.html#modules_file_moduleshttp://nodejs.org/api/modules.html#modules_folders_as_modules

于 2013-04-14T22:02:32.327 回答