【问题标题】:Typescript does not load handlebar files打字稿不加载车把文件
【发布时间】:2018-07-06 23:28:36
【问题描述】:

我有以下目录结构:

src
|- server
  |- myServer.ts
  |- views
    |- myView.hbs
dist
|- server
  |- myServer.js

请注意,dist 文件夹中没有 views 文件夹(从 typescript 编译的 js 源代码所在的位置)。这是一个问题,因为当我从 javascript 中请求 ../views/selectCoin.hbs 时,什么都没有。

编译打字稿时如何将*.hbs 文件导出到javascript?

【问题讨论】:

  • 为什么要使用outDir而不是只编译同一个文件夹下的js文件?这将完全解决问题
  • 你使用的是 webpack 还是 gulp?还是纯tsc 编译?
  • @BrunoLM 我使用的是普通的tsc

标签: node.js typescript express handlebars.js


【解决方案1】:

要告诉车把视图在哪里,您可以像这样配置它

app.set('view engine', 'hbs');
app.set('views', path.join(__dirname, '../../src/server/views'));
app.engine('hbs', exphbs({
    defaultLayout: 'index',
    extname: 'hbs',
    layoutsDir: path.join(__dirname, '../../src/server/views/layouts'),
    partialsDir: path.join(__dirname, '../../src/server/views'),
}));

因此它将在src 文件夹中查找视图。


另一种选择是使用ts-node 而不是node。有了它,你不需要编译你的项目,你也不需要 dist 文件夹,你可以配置它直接从你所在的地方看:

app.set('view engine', 'hbs');
app.set('views', path.join(__dirname, 'views'));
app.engine('hbs', exphbs({
    defaultLayout: 'index',
    extname: 'hbs',
    layoutsDir: path.join(__dirname, 'views/layouts'),
    partialsDir: path.join(__dirname, 'views'),
}));

如果您想将视图复制到 dist 文件夹,您可以:

【讨论】:

  • ts-node 是我选择的解决方案。没有测试其他人。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 2018-02-04
  • 2019-07-23
  • 2013-06-28
  • 1970-01-01
相关资源
最近更新 更多