Angular TypeScript找不到模块经常出现

Angular TypeScript找不到模块经常出现,angular,typescript,asp.net-core,Angular,Typescript,Asp.net Core,自从我尝试使用typescript、angular2和asp core做一些简单的工作以来,花了大约10个小时。我会向你解释我在这里走过的路,以及你有什么想法,我将不胜感激 首先,你应该考虑我使用链接模板中的项目模板: 然后我想添加一些代码来在localStorage中存储一些数据 一些链接建议我必须非常简单地访问localStorage。但当我想从angular2的组件中访问localStorage时,我遇到了以下错误: cannot find module 'services/local-

自从我尝试使用typescript、angular2和asp core做一些简单的工作以来,花了大约10个小时。我会向你解释我在这里走过的路,以及你有什么想法,我将不胜感激

首先,你应该考虑我使用链接模板中的项目模板:

然后我想添加一些代码来在localStorage中存储一些数据

一些链接建议我必须非常简单地访问localStorage。但当我想从angular2的组件中访问localStorage时,我遇到了以下错误:

cannot find module 'services/local-storage-service'
未定义本地存储

然后我在谷歌上搜索了很多解决方案,找到了以下库:

但它们都不起作用

然后我尝试编写一个服务,希望能够轻松访问本地存储。然后我创建了这个文件:

/ClientApp/app/services/local-storage-service.ts

export class LocalStorageService {
    write(key: string, value: any) {
        if (value) {
            value = JSON.stringify(value);
        }
        localStorage.setItem(key, value);
    }

    read<T>(key: string): T {
        let value: string = localStorage.getItem(key);

        if (value && value != "undefined" && value != "null") {
            return <T>JSON.parse(value);
        }

        return null;
    }
}
我得到了这个错误:

cannot find module 'services/local-storage-service'
你能猜到的我都试过了。奇怪的是,进口波纹管工作良好:

import { AppComponent } from './components/app/app.component';
文件位于“/ClientApp/app/app.component.ts”,但当我将该文件复制到“/services/app.component.ts”时,会发生相同的错误

我不知道如何问这个问题。但我会尝试你的任何想法

****更新 这是目录树:

虽然在app.modules.ts文件中,我可以这样访问它:

import { LocalStorageService } from 'services/local-storage-service';
import { LocalStorageService } from './services/local-storage.service';
没有错误。但在文件settoken.component.ts中,它会导致错误

***重新更新

现在,通过正确的路径,我注入了服务。但是它说本地存储没有定义! 服务代码就是建议的代码

import { Injectable } from '@angular/core';

@Injectable()
export class LocalStorageService {
    private storage: any;

    constructor() {
        this.storage = localStorage;
    }

    public retrieve(key: string): any {
        var item = this.storage.getItem(key);

        if (item !== null && item !== 'undefined') {
            return JSON.parse(this.storage.getItem(key));
        }

        return;
    }

    public store(key: string, value: any) {
        this.storage.setItem(key, JSON.stringify(value));
    }

}
错误是:

Exception: Call to Node module failed with error: Error: Uncaught (in promise): ReferenceError: localStorage is not defined
ReferenceError: localStorage is not defined

TG.

对于非模块文件,必须使用相对路径;e、 例如,
/
。/
。您不会说试图导入与服务相关的服务的文件在哪里。假设它位于父目录中,路径将是
/services/localstorageservice

如果仍有问题,可以尝试使用此本地存储服务

import { Injectable } from '@angular/core';

@Injectable()
export class LocalStoragePersistence {
    private storage:any;

    constructor() {
        this.storage = localStorage;
    }

    public retrieve(key:string):any {
        var item = this.storage.getItem(key);

        if (item !== null && item !== 'undefined') {
            return JSON.parse(this.storage.getItem(key));
        }

        return;
    }

    public store(key:string, value:any) {
        this.storage.setItem(key, JSON.stringify(value));
    }

}
使用将其导入到组件中

import { LocalStoragePersistence } from './services/local-storage.service';
确保记得在提供者数组中声明它:
providers:[LocalStoragePersistence]


请注意,建议将文件重命名为
local storage.service.ts
。这是文件(feature.type.ts)的Angular 2命名模式。希望这有帮助。

对于非模块文件,您必须使用相对路径;e、 例如,
/
。/
。您不会说试图导入与服务相关的服务的文件在哪里。假设它位于父目录中,路径将是
/services/localstorageservice

如果仍有问题,可以尝试使用此本地存储服务

import { Injectable } from '@angular/core';

@Injectable()
export class LocalStoragePersistence {
    private storage:any;

    constructor() {
        this.storage = localStorage;
    }

    public retrieve(key:string):any {
        var item = this.storage.getItem(key);

        if (item !== null && item !== 'undefined') {
            return JSON.parse(this.storage.getItem(key));
        }

        return;
    }

    public store(key:string, value:any) {
        this.storage.setItem(key, JSON.stringify(value));
    }

}
使用将其导入到组件中

import { LocalStoragePersistence } from './services/local-storage.service';
确保记得在提供者数组中声明它:
providers:[LocalStoragePersistence]



请注意,建议将文件重命名为
local storage.service.ts
。这是文件(feature.type.ts)的Angular 2命名模式。希望这有帮助。

导入路径中是否缺少
/
。/
?通常,只有节点模块可以在没有导入中的模块的情况下启动,除非您正在根据“”对绑定器(我不确定ts是否知道)执行一些魔术,否则将在任何父目录上尝试非相对路径。但是我试过你提到的那些。什么都没变!嗯,我不知道这件事,今天学到了一些新东西!谢谢对不起,这对你没用,欢迎你。附加问题:这可能是因为网页或其他原因吗?哦。问题解决了!通过此路径“从“../../services/local storage.service”;”导入{LocalStorageService}”,让我找到原因。因为我以前尝试过所有这些方法。导入路径中是否缺少
/
。/
?通常,只有节点模块可以在没有导入中的模块的情况下启动,除非您正在根据“”对绑定器(我不确定ts是否知道)执行一些魔术,否则将在任何父目录上尝试非相对路径。但是我试过你提到的那些。什么都没变!嗯,我不知道这件事,今天学到了一些新东西!谢谢对不起,这对你没用,欢迎你。附加问题:这可能是因为网页或其他原因吗?哦。问题解决了!通过此路径“从“../../services/local storage.service”;”导入{LocalStorageService}”,让我找到原因。因为我以前尝试过所有这些方法。你的评论很好,但还不是答案。请考虑我增加的更新。还有别的主意吗?哦。问题解决了!通过此路径“从“../../services/local storage.service”;”导入{LocalStorageService}”,让我找到原因。因为我以前尝试过所有这些方法。我认为问题在于其中一种工具。现在,即使没有正确的名称和注射剂,它也可以正常工作!但我肯定我以前都试过了。在运行模式下,我怀疑VS的功能。请检查***重新更新。在Index.html中,我已将
加载…
更改为
加载…
,现在一切正常!你知道原因吗?你的评论不错,但还不是答案。请考虑我增加的更新。还有别的主意吗?哦。问题解决了!通过此路径“从“../../services/local storage.service”;”导入{LocalStorageService}”,让我找到原因。因为我以前尝试过所有这些方法。我认为问题在于其中一种工具。现在,即使没有正确的名称和注射剂,它也可以正常工作!但我肯定我以前都试过了。在运行模式下,我怀疑VS的功能。请检查***重新更新。在Index.html中,我已将
加载…
更改为
加载…
,现在一切正常!你知道原因吗?