node.js 路径问题

项目结构

home
  ├app            //项目逻辑目录
    ├routes
    ├src
    └app.js
  ├public        //静态文件目录
  └node_modules

假如我需要定义模板静态文件的路径需要这样定义:

app.use(express.static(path.join(__dirname, '../public')));

怎么样才能使用绝对路径呢?用 __dirnameprocess.cwd() 这些变量方法都不能达到效果。
有什么方法可以获取到项目的根目录然后可以全局使用?

阅读 8.2k
3 个回答

不起作用是指,静态目录不对?那换成:

//假设这段代码是写在home/app目录下
app.use(express.static(path.resolve(__dirname, '..', 'public')));

搞成全局实在没什么用,别闹了

process.cwd()应该是获取当前工作目录,应该也是项目根目录啊...
global变量全局的,试试挂载到上面,如果express框架的话,有一个供ejs模板使用的'全局'变量
 _.extend(app.locals, {
  config: config,
  Loader: Loader,
  assets: assets
})
    

__dirname 表示文件当前路径, ./在require中表示当前目录,process.cwd()表示命令行启动的路径。

你在express中的话,我建议是直接用:path.join(__dirname, '../public')

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题