Angular TypeScript找不到模块经常出现
自从我尝试使用typescript、angular2和asp core做一些简单的工作以来,花了大约10个小时。我会向你解释我在这里走过的路,以及你有什么想法,我将不胜感激 首先,你应该考虑我使用链接模板中的项目模板: 然后我想添加一些代码来在localStorage中存储一些数据 一些链接建议我必须非常简单地访问localStorage。但当我想从angular2的组件中访问localStorage时,我遇到了以下错误: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-
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中,我已将加载…
更改为加载…
,现在一切正常!你知道原因吗?