Moe*_*ius 5 node.js express handlebars.js typescript
我有以下目录结构:
src
|- server
|- myServer.ts
|- views
|- myView.hbs
dist
|- server
|- myServer.js
Run Code Online (Sandbox Code Playgroud)
请注意,views文件夹中没有文件dist夹(从 typescript 编译的 js 源所在)。这是一个问题,因为当我../views/selectCoin.hbs从 javascript 中请求时,什么也没有。
*.hbs编译打字稿时如何将文件导出到 javascript?
要告诉车把视图在哪里,您可以像这样配置它
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'),
}));
Run Code Online (Sandbox Code Playgroud)
所以它会在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'),
}));
Run Code Online (Sandbox Code Playgroud)
如果要将视图复制到 dist 文件夹,您可以: