为什么这个方法声明:declare module "*!text" {}
不起作用?
目标 - 在变量中使用文件内容:
import layout = require("/js/views/layouts/wnd.html!text");
左右:
import layout from "/js/views/layouts/wnd.html!text";
如果我们按如下方式做声明:declare module "/js/views/layouts/wnd.html!text" {}
-
一切正常,但如果使用此方法"*!text"
,我会收到错误cannot find module
。如何强制使用此模板:"*!text"
?
参考to an example of the documentation
我将systemJS与plug-in for download text files
一起使用打字稿版本 - 2.0.6
答案 0 :(得分:2)
Typescript在转换为js文件时不会删除此特殊规则“!text”(即使将moduleResolution设置为“node”)
因此它导致文件路径解析失败。 (使用typescript v2.2.1测试,node.js v6.9.5)
文件需要更新。
通过添加自定义文件扩展名,这是一个可行的版本:
index.d.ts
declare module "*.html" {
const value: string;
export default value;
}
将nodejs模块扩展扩展为将* .html读入纯文本
require.extensions['.html'] = function(module, filename) {
module.exports = fs.readFileSync(filename, 'utf8');
}
从你的例子来看,它应该是这样的:
import * as layout from "./js/views/layouts/wnd.html";
console.log(layout);