gpt4 book ai didi

Angular 错误 TS2304 : Cannot find name 'config'

转载 作者:太空狗 更新时间:2023-10-29 17:47:46 24 4
gpt4 key购买 nike

按照我找到的教程在 Angular 中重建演示登录和注册页面应用程序 here .目前得到这个

ERROR in src/app/_services/authentication.service.ts(10,35): error TS2304: Cannot find name 'config'

搜索类似问题herehere .第一个链接解决了 webpack 的问题,但已经过时,第二个链接完全不相关。我已将“webpack-env”添加到 tsconfig.app.json 和 tsconfig.spec.json 我还按照这些 instructions 更新了 webpack 和 webpack cli .

查看下面受影响的代码: webpack.config.js

const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
entry: './src/main.ts',
module: {
rules: [
{
test: /\.ts$/,
use: ['ts-loader', 'angular2-template-loader'],
exclude: /node_modules/
},
{
test: /\.(html|css)$/,
loader: 'raw-loader'
},
]
},
resolve: {
extensions: ['.ts', '.js']
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html',
inject: 'body'
}),
new webpack.DefinePlugin({
// global app config object
config: JSON.stringify({
apiUrl: 'http://localhost:4000'
})
})
],
optimization: {
splitChunks: {
chunks: 'all',
},
runtimeChunk: true
},
devServer: {
historyApiFallback: true
}
};

authentication.service.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { map } from 'rxjs/operators';

@Injectable()
export class AuthenticationService {
constructor(private http: HttpClient) { }

login(username: string, password: string) {
return this.http.post<any>(`${config.apiUrl}/users/authenticate`, { username: username, password: password })
.pipe(map(user => {
// login successful if there's a jwt token in the response
if (user && user.token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify(user));
}

return user;
}));
}

logout() {
// remove user from local storage to log user out
localStorage.removeItem('currentUser');
}
}

用户服务.ts

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';

import { User } from '../_models/user';

@Injectable()
export class UserService {
constructor(private http: HttpClient) { }

getAll() {
return this.http.get<User[]>(`${config.apiUrl}/users`);
}

getById(id: number) {
return this.http.get(`${config.apiUrl}/users/` + id);
}

register(user: User) {
return this.http.post(`${config.apiUrl}/users/register`, user);
}

update(user: User) {
return this.http.put(`${config.apiUrl}/users/` + user.id, user);
}

delete(id: number) {
return this.http.delete(`${config.apiUrl}/users/` + id);
}
}

tsconfig.app.json

{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "es2015",
"types": [
"webpack-env"
]
},
"exclude": [
"src/test.ts",
"**/*.spec.ts"
]
}

tsconfig.spec.json

{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"module": "commonjs",
"types": [
"jasmine",
"node",
"webpack-env"
]
},
"files": [
"test.ts",
"polyfills.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}

最佳答案

参见 Angular 6 Custom Typings File

Path: /src/typings.d.ts

A custom typings file is used to declare types that are created outside of your angular application, so the TypeScript compiler is aware of them and doesn't give you errors about unknown types. This typings file contains a declaration for the global config object that is created by webpack (see webpack.config.js below).

// so the typescript compiler doesn't complain about the global config object
declare var config: any;

关于 Angular 错误 TS2304 : Cannot find name 'config' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51273495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com