我试图让我的第一个Typescript和DefinitelyTyped节点应用程序启动并运行,并遇到一些错误.
当我尝试转换一个简单的ts节点页面时,我收到错误"TS2304:找不到名称'require'".我已经在SO上阅读了其他几个这样的错误,我认为我没有类似的问题.
我在shell提示符下运行命令:tsc movie.server.model.ts.该文件的内容是:
tsc movie.server.model.ts.
Run Code Online (Sandbox Code Playgroud)
var mongoose = require('mongoose')行引发错误
typings/tsd.d.ts文件的内容是:
'use strict';
/// <reference path="typings/tsd.d.ts" />
/* movie.server.model.ts - definition of movie schema */
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var foo = 'test';
Run Code Online (Sandbox Code Playgroud)
.d.ts文件引用放在相应的文件夹中,并通过命令添加到typings/tsd.d.ts:
/// <reference path="node/node.d.ts" />
/// <reference path="requirejs/require.d.ts" />
Run Code Online (Sandbox Code Playgroud)
生成的.js文件似乎工作正常,所以我可以忽略错误.但我很想知道为什么会出现这种错误以及我做错了什么.
在使用此方法之前,我正在练习从 json 文件中读取数据,该文件包含国家和州的列表,但我想使用 httpClient 并且通过测试我有这些方法,但是读取此数据的正确方法是什么. 早期方法:
getCountries(): Observable<Country[]> {
return of(countries['countries']);
}
getStates(countryID): Observable<State[]> {
return of(countries['states'].filter(f => f.countryId === countryID));
}
Run Code Online (Sandbox Code Playgroud)
这是一种如何工作的方法:
getC(): Observable<Country[]> {
return this.http.get<Country[]>(this.link).pipe(map(k => {
return k['countries'];
}));
}
getS(CID): Observable<State[]> {
return this.http.get<State[]>(this.link).pipe(map(v => {
return v['states'].filter(f => f.countryId === CID);
}));
}
Run Code Online (Sandbox Code Playgroud)
我看到类似的东西,但我有错误
getC3(): Observable<Country[]> {
return this.http.get<Country[]>(this.link)
.toPromise()
.then(res => <Country[]>res.countries)
.then(data => {return data});
}
Run Code Online (Sandbox Code Playgroud)
正确的方法是如何做到这一点,错误:
已经几天了,好像问题比较严重,所以问这边,请问这个json获取数据的方法是什么:
[
{
"data": [
{
"label": "Select State",
"value": null
},
{
"label": "Adeje", …Run Code Online (Sandbox Code Playgroud) 我试图加载两种方式的本地JSON文件.
这是我的json文件:
{
"imgsesion": "fa_closesesion.png",
"texthome": "volver a la home",
"logo": "fa_logo.png",
"menu": {
"background": "orange",
"link1": "ESCRITOR",
"link2": "MÚSICO",
"link3": "AYUDA ADMIN",
"submenu": {
"link1": {
"text1": "novelas",
"text2": "obras de teatro"
},
"link2": {
"text1": "compositor",
"text2": "intérprete"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的服务文件(general.service.ts)
getContentJSON() {
return this.http.get('assets/json/general.json')
.map(response => response.json());
}
Run Code Online (Sandbox Code Playgroud)
这样工作正常,但在Web浏览器控制台中显示下一个错误:
ERROR TypeError: Cannot read property 'menu' of undefined
Run Code Online (Sandbox Code Playgroud)
这是我的服务文件(general.service.ts)
getContentJSON() {
return this.httpClient.get("assets/json/general.json");
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,因为我找不到general.json文件,它通过错误的控制,它给我一个错误404
这是组件文件(app.component.ts)
export class AppComponent implements OnInit {
contentGeneral: any; …Run Code Online (Sandbox Code Playgroud) 我正在使用 Angular CLI(版本 6)。我的JSON文件assets夹中有一个小文件,我想将其导入到我的组件中。我想在不使用来自我的组件的 GET 请求的情况下执行此操作。
我做了什么:
我创建了一个新文件,typings.d.ts:
declare module "*.json" {
const value: any;
export default value;
}
Run Code Online (Sandbox Code Playgroud)
... 并在tsconfig.spec.json. 以下是引用的片段ts.config.spec.json:
"files": [
"test.ts",
"polyfills.ts",
"./typings.d.ts"
],
Run Code Online (Sandbox Code Playgroud)从我的组件中,我试图导入我的 JSON 文件:
import * as myConfig from '../../assets/config.json';
Run Code Online (Sandbox Code Playgroud)但是,在该行中,我收到一条错误消息:cannot find module ../../assets/config.json.
我很确定这个相对路径是正确的(我也尝试了其他几个选项,类似于typings.d.ts 引用 - 但无论如何,我的目录结构只是一个简单的 Angualr CLI 应用程序:
|- src
|
|-app
| |-component
| |-component.ts
|
|
|-assets
|-config.json
Run Code Online (Sandbox Code Playgroud)
任何有关如何解决此问题的提示将不胜感激。
我已经阅读了我能找到的所有其他关于此的文章或帖子。我一生都无法弄清楚这个简单的任务我哪里出了问题。(特别是按照这个例子。)我一定做了一些明显愚蠢的事情,但我已经看这个很久了,我看不到它。
我在 asset/mockData 中有一个名为 isRecognized.json 的 json 文件。我已将 mockData 目录添加到我的 webpack 配置文件中,因此它包含在 /dist 目录中。如果我访问 http:localhost:4200/assets/mockData/isRecognized.json 我可以看到该文件,所以我知道它可用。
但是,当我尝试使用 HTTP 客户端检索文件时,无论我如何尝试,它都会抛出 404。
编辑:我使用的是 Webpack,而不是 Angular CLI。
应用程序组件.ts
import { MyService } from './services/my.service';
import { Component, OnInit, Renderer2 } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
/*
* Main app component that houses all views.
*/
@Component({
selector: 'app-comp',
templateUrl: './app.component.html'
})
export class AppComponent implements OnInit {
constructor(
private route: ActivatedRoute, private service: MyService
) {}
ngOnInit() { …Run Code Online (Sandbox Code Playgroud)