我在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的学习曲线上......
答案 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 导出的默认模块。