尽管文件存在,但仍未获取“模块未找到”

时间:2017-05-23 07:29:56

标签: javascript node.js angular typescript webpack

我下载了the angular starter并运行了该应用,但运行良好。现在我在“src / app / services / people.service.ts”中添加了一个新文件“people.service.ts”。

当我尝试导入它时,出现错误:

  

找不到模块:错误:无法解析'services / people.service'   “/路径到项目/角起动主/ SRC /应用”

这是我用来导入它的代码(在src / app / app.module.ts中):

import {PeopleService} from 'services/people.service';

我确信没有拼写错误,因为IDE会识别它。整个项目中没有任何TypeScript错误。文件'services / people.service'确实包含一个名为PeopleService的类。

任何帮助都将深表感谢。如果您需要任何其他信息,请与我们联系。

2 个答案:

答案 0 :(得分:3)

问题是您使用的是绝对路径而不是相对路径。将导入更改为以下内容:

import {PeopleService} from './services/people.service';

答案 1 :(得分:0)

TypeScript 2.0 +

在TypeScript 2.0中,您可以在tsconfig.json中添加baseUrl属性:

{
    "compilerOptions": {
        "baseUrl": "."
        // etc...
    },
    // etc...
}

然后您可以像导入基本目录一样导入所有内容:

import {PeopleService} from 'services/people.service';

除此之外,您还可以添加路径属性,该属性允许您匹配模式然后将其映射出来。例如:

{
    "compilerOptions": {
        "baseUrl": ".",
        "paths": {
            "services/*": [
                "services/validation/*"
            ]
        }
        // etc...
    },
    // etc...
}

这将允许您从任何地方导入它:

import {PeopleService} from 'services/people.service';

从那里,您将需要配置您正在使用的任何模块加载器以支持这些导入名称。现在,TypeScript编译器似乎无法自动映射这些。

您可以在github问题中阅读更多相关信息。还有一个rootDirs属性,在使用多个项目时非常有用。

您可以直接将绝对路径更改为相对路径,如下所示:

import {PeopleService} from './services/people.service';