Typescript无法找到模块

时间:2016-09-05 08:45:23

标签: typescript

Filter.ts,mustache.js和redux.3.5.2.js位于同一目录(/ Scripts)中。 Filter.ts具有以下代码:

///<reference path="./typings/mustache.d.ts" />
import Mustache = require("mustache");
import Redux = require("redux.3.5.2");

在Visual Studio代码中,它显示了redux无法找到模块的错误。当我编译它时,它说:

  

Filter.ts(13,24):错误TS2307:找不到模块'redux.3.5.2'。

那么如何才能找到小胡子而不是还原?

我还没有添加输入文件,但是如何影响导入文件?它还没有在代码中的任何地方使用?删除胡须键入也不会导致打字稿找不到文件。

$ ls *.js
requirejs.2.1.22.js  Filter.ts              mustache.js          redux.3.5.2.js

[更新]

更新了打字稿:

npm install -g typescript

tsc.cmd现在告诉我我有版本1.8.10

我的task.json看起来像:

{
    "version": "0.1.0",
    "command": "tsc.cmd",
    "isShellCommand": true,
    "showOutput": "silent",
    "problemMatcher": "$tsc"
}

和tsconfig.json看起来像:

{
    "compilerOptions": {
        "target": "es5",
        "watch": true,
        "module": "amd",
        "removeComments": true,
        "sourceMap": false,
        "outDir": "."
    }
}

现在Visual Studio代码抱怨它找不到我需要的任何模块,tsc.cmd抱怨它仍然无法找到模块'redux.3.5.2'。幸运的是,在重新启动Visual Studio代码后,这些错误消失了,但仍然无法找到redux。我不确定它是否找不到文件或文件中的某些内容导致此问题,因为错误未指定确切的问题是什么。

2 个答案:

答案 0 :(得分:1)

  

那么如何才能找到小胡子但不能找到redux

我可以在您的代码中看到///<reference path="./typings/mustache.d.ts" />。所以你确实有胡子的打字,因此它被发现。我没有在样品中看到任何关于还原剂的类型,因此找不到。

答案 1 :(得分:0)

JavaScript文件无关紧要,在根目录中放置定义文件(例如:module-name.d.ts)。

现在您的ts文件可以包含以下内容:

///<reference path="module-name.d.ts" />
import redux = require("module-name");

在require.config中,您可以执行以下操作:

require.config = {
  baseUrl:settings.appRoot,
  urlArgs: "version=" + settings.version,
  paths: {
    "module-name" :   settings.appRoot + "/Scripts/SomePlace/some-module",
...

如果将类型定义放在一个目录中(例如typings),那么ts文件将如下所示:

///<reference path="../typings/module-name.d.ts" />
import redux = require("typings/module-name");

如果另一个ts文件需要这个模块,但ts文件在另一个目录中(让我们看一个更深),那么你可以执行以下操作:

///<reference path="../../typings/module-name.d.ts" />
import redux = require("typings/module-name");

您的require.config将如下所示:

require.config = {
  baseUrl:settings.appRoot,
  urlArgs: "version=" + settings.version,
  paths: {
    "typings/module-name" :   settings.appRoot + "/Scripts/SomePlace/some-module",
...