我对快递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
请给我预付款!谢谢!
答案 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