[英]How to generate a build of an angular project?
I'm trying to build the build of a project in Angular, however every time I run the command for it ng build
is presented to me several errors, however searching I could not solve, would someone have a light? 我试图建立一个项目的构建中的角,但是我每次运行它的命令时ng build
呈现给我的几个错误,但我搜索没能解决,会有人有火吗?
E:\\Sistemas\\sourcecode>ng build --source-map=false --prod --deploy-url=client/ E:\\ Sistemas \\ sourcecode> ng build --source-map = false --prod --deploy-url = client /
Date: 2019-01-09T17:29:00.855Z
Hash: 00b6ba86f5c09a5273e8
Time: 121743ms
chunk {0} runtime.8004edb872d7c3b82213.js (runtime) 1.41 kB [entry] [rendered]
chunk {1} main.9868d9b237c3a48c54da.js (main) 128 bytes [initial] [rendered]
chunk {2} polyfills.85f47f0bf59079cbc23a.js (polyfills) 130 bytes [initial] [rendered]
chunk {3} styles.0befdcbdc7f0c4753cdc.css (styles) 75.2 kB [initial] [rendered]
ERROR in src/common/uploads/utils/upload-progress-event.ts(47,17): error TS2322: Type 'HttpEventType.UploadProgress | HttpEventType.DownloadProgress' is not assignable to type 'HttpEventType.Sent | HttpEventType.UploadProgress | HttpEventType.Response'.
Type 'HttpEventType.DownloadProgress' is not assignable to type 'HttpEventType.Sent | HttpEventType.UploadProgress | HttpEventType.Response'.
src/common/uploads/uploaded-file.ts(19,34): error TS2339: Property 'webkitRelativePath' does not exist on type 'File'.
src/common/uploads/uploaded-file.ts(27,25): error TS2345: Argument of type 'string | ArrayBuffer' is not assignable to parameter of type 'string | PromiseLike<string>'.
Type 'ArrayBuffer' is not assignable to type 'string | PromiseLike<string>'.
Type 'ArrayBuffer' is not assignable to type 'string'.
src/common/uploads/utils/create-upload-input.ts(31,15): error TS2339: Property 'webkitdirectory' does not exist on type 'HTMLInputElement'.
src/common/uploads/utils/read-uploaded-folders.ts(3,52): error TS2304: Cannot find name 'WebKitEntry'.
src/common/uploads/utils/read-uploaded-folders.ts(10,58): error TS2304: Cannot find name 'WebKitFileEntry'.
src/common/uploads/utils/read-uploaded-folders.ts(12,66): error TS2304: Cannot find name 'WebKitDirectoryEntry'.
src/common/uploads/utils/read-uploaded-folders.ts(19,40): error TS2304: Cannot find name 'WebKitDirectoryEntry'.
src/common/uploads/utils/read-uploaded-folders.ts(26,50): error TS2304: Cannot find name 'WebKitDirectoryEntry'.
src/common/uploads/utils/read-uploaded-folders.ts(28,63): error TS2304: Cannot find name 'WebKitFileEntry'.
src/common/uploads/utils/read-uploaded-folders.ts(35,27): error TS2304: Cannot find name 'WebKitDirectoryEntry'.
src/common/uploads/utils/read-uploaded-folders.ts(35,58): error TS2304: Cannot find name 'WebKitEntry'.
src/common/uploads/utils/read-uploaded-folders.ts(42,36): error TS2304: Cannot find name 'WebKitFileEntry'.
Here is my tsconfig.json 这是我的tsconfig.json
{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"common": [
"common/"
]
},
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"skipLibCheck": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
Here is my read-uploaded-folders.ts 这是我的read-uploaded-folders.ts
import { UploadedFile } from '../uploaded-file';
export async function readUploadedFolders(entries: WebKitEntry[]): Promise<UploadedFile[]> {
let files = [];
for (const key in entries) {
const entry = entries[key];
if ( ! entry.isDirectory) {
files.push(await transformFileEntry(entry as WebKitFileEntry));
} else {
files = files.concat(await readDirRecursive(entry as WebKitDirectoryEntry));
}
}
return files;
}
async function readDirRecursive(entry: WebKitDirectoryEntry, files = []) {
const entries = await readEntries(entry);
for (const key in entries) {
const childEntry = entries[key];
if (childEntry.isDirectory) {
await readDirRecursive(childEntry as WebKitDirectoryEntry, files);
} else {
files.push(await transformFileEntry(childEntry as WebKitFileEntry));
}
}
return files;
}
function readEntries(dir: WebKitDirectoryEntry): Promise<WebKitEntry[]> {
return new Promise(resolve => {
const reader = dir.createReader();
reader.readEntries(entries => resolve(entries as any));
});
}
function transformFileEntry(entry: WebKitFileEntry) {
return new Promise(resolve => {
entry.file((file: any) => {
resolve(new UploadedFile(file as File, entry.fullPath));
});
});
}
Here is my upload-progress-event.ts 这是我的upload-progress-event.ts
import { HttpEvent, HttpEventType } from '@angular/common/http';
import { getUploadProgress } from './get-upload-progress';
import { getUploadSpeed } from './get-upload-speed';
import { getUploadETA } from './get-upload-eta';
import { prettyUploadETA } from './pretty-upload-eta';
import { prettyBytes } from '../../core/utils/pretty-bytes';
import { FileEntry } from '../file-entry';
import { BackendResponse } from '../../core/types/backend-response';
export enum UploadEventTypes {
STARTED = 'uploadStarted',
PROGRESS = 'uploadProgress',
COMPLETED = 'uploadCompleted',
OTHER = 'unrecognizedEvent'
}
export interface UploadCompletedEvent {
type: HttpEventType.Response;
name: UploadEventTypes.COMPLETED;
fileEntry: FileEntry;
}
export interface UploadProgressEvent {
type: HttpEventType.UploadProgress;
name: UploadEventTypes.PROGRESS;
totalBytes: number;
completedBytes: number;
progress: number;
speed: string;
eta: string;
}
export interface UploadStartedEvent {
type: HttpEventType.Sent;
name: UploadEventTypes.STARTED;
time: number;
}
export type UploadEvent = UploadStartedEvent | UploadCompletedEvent | UploadProgressEvent;
export function transformAngularUploadEvent<T>(e: HttpEvent<{fileEntry: FileEntry}>, uploadStarted: number): UploadEvent {
switch (e.type) {
case HttpEventType.Sent:
return {type: e.type, name: UploadEventTypes.STARTED, time: uploadStarted};
case HttpEventType.UploadProgress:
return {
type: e.type,
name: UploadEventTypes.PROGRESS,
totalBytes: e.total,
completedBytes: e.loaded,
progress: getUploadProgress(e),
speed: prettyBytes(getUploadSpeed(e, uploadStarted)),
eta: prettyUploadETA(getUploadETA(e, uploadStarted)),
};
case HttpEventType.Response:
return {type: e.type, name: UploadEventTypes.COMPLETED, fileEntry: e.body.fileEntry};
default:
return null;
}
}
When you build for production ng build --prod
by default angular compiler uses aot: true
flag (it's specified in angular.json
file under configurations\\production
node). 在为生产ng build --prod
,默认情况下,角度编译器会使用aot: true
标志(在configurations\\production
节点下的angular.json
文件中指定)。 You could check the The Ahead-of-Time (AOT) compiler
requirements https://angular.io/guide/aot-compiler (one to look out for is that properties/methods used int the template must be public) 您可以检查The Ahead-of-Time (AOT) compiler
要求https://angular.io/guide/aot-compiler (需要注意的是模板中使用的属性/方法必须是公共的)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.