无法找到ES6样式导入的模块'hbs'

时间:2015-10-23 10:27:28

标签: javascript typescript ecmascript-6 typescript1.6

我在TypeScript中这样做,但是在vanilla JS中也尝试了同样的错误。我已经删除了两个模块:表达 hbs 。我正在尝试使用ES6 import语法:

import * as http from 'http';
import * as express from 'express';
import hbs from 'hbs'; 

最后一行给出了一个错误,说它找不到模块 hbs 。我正好看它...我可以看到它很好。但是当我用旧的CommonJS语法替换该行时:

var hbs = require('hbs');

它运作正常......是什么给出的?仍然在ES6的学习曲线上......

3 个答案:

答案 0 :(得分:1)

观察1 ...正如您在其他导出中一样,您应该使用别名导入整个模块:

import * as hbs from 'hbs';

或者您可以选择导入特定的导出:

import {thing} from 'hbs';

观察2 ... hbs是一个TypeScript模块,还是一个JavaScript模块?如果它是JavaScript(我认为可能是),您需要将它与定义文件配对,例如描述JavaScript文件的hbs.d.ts。没有定义,TypeScript将无法识别纯JavaScript模块。

答案 1 :(得分:0)

我遇到了类似的问题。语法确实是正确的ES6。 好消息是这个问题似乎已经在typescript编译器的开发版本中得到了修复0.8:尝试下午安装typescript @ next -g'然后再次运行编译器。

答案 2 :(得分:0)

你应该使用 default 作为导入的模块名称。

import {default as hbs} from "hbs";

这与

相同
var hbs = require('hbs'); 

因为 require("hbs") 导入 hbs 导出的默认模块。