打字稿:“无法find模块”有效打字
我刚刚开始使用打字机新的nodejs项目。 我安装了Typings( https://github.com/typings/typings ),并使用它来为节点v4.x安装参考文件,并且表示v4.x.
我的节点版本是v4.2.6我的打字版本是v1.7.5
我的项目目录是这样布置的:
package.json tsconfig.json typings.json src/ app.ts typings/ main.d.ts main/ambient/node/node.d.ts main/ambient/express/express.d.ts
typings / main.d.ts的内容如下:
/// <reference path="main/ambient/express/express.d.ts" /> /// <reference path="main/ambient/node/node.d.ts" />
tsconfig.json的内容如下:
{ "compilerOptions": { "target": "es6", "module": "commonjs" } }
typings.json的内容如下:
{ "dependencies": {}, "devDependencies": {}, "ambientDependencies": { "express": "github:DefinitelyTyped/DefinitelyTyped/express/express.d.ts#dd4626a4e23ce8d6d175e0fe8244a99771c8c3f2", "node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#1c56e368e17bb28ca57577250624ca5bd561aa81" } }
src / app.ts的内容如下:
'use strict'; ///<reference path="../typings/main.d.ts"/> import * as express from "express";
这是非常简单的,应该导致一个基本的应用程序。 但是,当我尝试编译这个时,我得到了错误error TS2307: Cannot find module 'express'.
我已经尝试重新排列打字文件,改变参考path标记中的相对path,使用tsconfig.json中的files
字段来指示引用path,而不是在文件中使用内联标记,都无济于事。 我也尝试直接在命令行上使用gulp-typescript
, gulp-tsc
和tsc
编译。
当我尝试使用nodejs内置模块(如crypto
, http
, fs
等)时,出现类似的错误
这些参考资料似乎有效 – 我错过了什么?
三斜杠指令需要在文件中的任何语句之前。 您的"use strict"
序言需要在您的参考意见之后提出:
///<reference path="../typings/main.d.ts"/> 'use strict'; import * as express from "express";
作为你的评论的后续,你没有得到任何排除你的导入:这是因为TypeScript执行导入省略。 除非您使用模块的某些值,否则编译器将不会发出导入,因为它假定您只需要该模块的types。
Daniel的答案在技术上是正确的,但基于你的tsconfig main.d.ts
仍然会被拾取,所以不会为你解决问题。
这就是说我确实发现了问题并发送了一个pull请求: https : //github.com/jereynolds/ts-test/pull/1
-
你可能应该排除
node_modules
和node_modules
否则编译将包含重复的标识符(typings)/将会很慢(node_modules) -
types安装
serve-static
(需要express
)和mime
(serve-static
所需)。