为什么打字稿无法导入模块?
Why is typescript failing to import a module?
Typescript 无法导入 js-yaml
包。它实际上发生在我的更多包上,但这是重现问题的简单方法。
在新目录中,键入:
npm install js-yaml
然后在同一目录中添加以下 ts 文件:
import * as y from 'js-yaml';
console.log(y);
当我使用这个命令编译时:
$ tsc --version
message TS6029: Version 1.7.5
$ tsc --module commonjs file.ts
file.ts(2,20): error TS2307: Cannot find module 'js-yaml'.
如果我将导入样式更改为 commonjs,如下所示:
declare var require: any; // need to declare require, or else tsc complains
let y = require('js-yaml');
console.log(y);
一切顺利编译。此外,我看到即使 tsc 编译失败,它也会输出一个文件。在这个文件中,有与正确编译版本中完全相同的 require
调用:
var y = require('js-yaml');
console.log(y);
这是一个错误,还是我在做一些愚蠢的事情?
我真傻。在 Typescript gitter room 的帮助下,我意识到我丢失了 typings 文件。所以,我 运行 这个:
tsd install js-yaml
然后在 ts 文件的顶部添加 typings 引用,如下所示:
/// <reference path="./typings/js-yaml/js-yaml.d.ts"/>
import * as y from 'js-yaml';
console.log(y);
编译成功。
Typescript 无法导入 js-yaml
包。它实际上发生在我的更多包上,但这是重现问题的简单方法。
在新目录中,键入:
npm install js-yaml
然后在同一目录中添加以下 ts 文件:
import * as y from 'js-yaml';
console.log(y);
当我使用这个命令编译时:
$ tsc --version
message TS6029: Version 1.7.5
$ tsc --module commonjs file.ts
file.ts(2,20): error TS2307: Cannot find module 'js-yaml'.
如果我将导入样式更改为 commonjs,如下所示:
declare var require: any; // need to declare require, or else tsc complains
let y = require('js-yaml');
console.log(y);
一切顺利编译。此外,我看到即使 tsc 编译失败,它也会输出一个文件。在这个文件中,有与正确编译版本中完全相同的 require
调用:
var y = require('js-yaml');
console.log(y);
这是一个错误,还是我在做一些愚蠢的事情?
我真傻。在 Typescript gitter room 的帮助下,我意识到我丢失了 typings 文件。所以,我 运行 这个:
tsd install js-yaml
然后在 ts 文件的顶部添加 typings 引用,如下所示:
/// <reference path="./typings/js-yaml/js-yaml.d.ts"/>
import * as y from 'js-yaml';
console.log(y);
编译成功。