表达js - require('config.js')

时间:2017-01-03 04:42:44

标签: express

我对快递js中的相对网址感到困惑。 我有2个文件:app.js和config.js 我在“my_app”文件夹(应用程序文件夹)中并运行app:

在app.js中:

var config = require('config.js');
// => throw err : Cannot find module 'config.js'

var config = require('/config.js');
// => throw err : Cannot find module '/config.js'

var config = require('./config.js');
// => throw err : Cannot find module 'http://localhost:3000/config.js'

var config = require(__dirname + '/config.js');
// => throw err : Cannot find module 'http://localhost:3000/config.js'

my_app文件夹在哪里?虽然从内部开始,但它不在require命令中。

这是我的结构:

start
  -- controllers
  -- models
  -- node_modules
  -- public
  -- views
  app.js
  config.js
  package.json
  router.js

请给我预付款!谢谢!

1 个答案:

答案 0 :(得分:2)

节点中有两种类型的模块,核心模块和用户定义的模块。 您编写的每个文件都是用户定义的模块。要引用任何用户定义的模块,您需要传递相对路径。

"./config.js" - here ./ means that config file is in the current directory (of the file you are working on)
"../config.js" - here ../ means that config file is in the parent directory (of the file you are working on)
__dirname - macro which gives the path of the directory of the file you are working on
__filename - macro which gives the path of the file that you are working on

如果您只是说“config.js”,则表示它是核心模块,节点在node_modules文件夹中搜索该模块。如果在那里找不到它,它会在父目录的node_modules文件夹中搜索该文件,依此类推。如果仍然没有找到模块,则会抛出错误

最好使用路径模块来构造路径,因为它有一些易于使用的API,它可以避免错误。 更多信息here