Siempre he estado en la etapa de comprender TypeScript y node.js, y en realidad no lo he usado.
Solo los jefes volvieron a hablar sobre el marco kos.
Por curiosidad y ociosidad, fui hasta cierto punto a ver los tutoriales de varios tipos grandes y lo construí yo mismo.
Aunque al final corrí con éxito, sé cuántas trampas hay. Wow o(╥﹏╥)
proceso:
1. Verifique la versión de su nodo
El documento oficial dice: "Koa depende del nodo v7.6.0 o ES2015 y versiones posteriores y soporte de método asíncrono"
Use node -v para verificar la versión de su nodo, si es menor, actualícelo usted mismo ~
Mi versión de node.js es 5.8.0 y pisé la mía
2. Instale dependencias tsc y cree proyectos
Instalar mecanografiado globalmente:
npm install -g typescript
Cree el proyecto node.js:
npm init
3. Entrar en el directorio del proyecto
Genere el archivo de configuración tsc (tsconfig.json):
tsc --init
Dependencias de instalación:
npm i
Instale las dependencias de kos:
npm i koa koa-router
npm i --save-dev typescript ts-node nodemon
npm i --save-dev @types/koa @types/koa-router
Instalar dependencias mecanografiadas:
npm i typescript
En el proyecto, a veces necesita usar la importación para introducir sus propios módulos o módulos de terceros. Sin embargo, debido al mecanismo de mecanografiado, la importación directa no es posible. En este momento, necesita instalar las dependencias de @types/node
npm install --save-dev @types/node
4. Modificar paquete.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "tsc && node app.js"
}
Nota: al nodo le sigue el archivo principal, que es el nombre del archivo que se ejecutará
5. Cree app.ts (el archivo ts que se ejecutará) en el directorio del proyecto. Según el código del documento oficial, el código es el siguiente:
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
6. ¡Corre! ¡proyecto!
Compilar el proyecto:
tsc
Ejecute el proyecto:
npm start
Introduzca la url en el navegador: localhost:3000
Paso en el hoyo:
1. Se reporta un error al compilar
ode_modules/@types/node/index.d.ts(6208,55): error TS2304: Cannot find name 'Map'.
node_modules/@types/node/index.d.ts(6215,55): error TS2304: Cannot find name 'Set'.
node_modules/@types/node/index.d.ts(6219,64): error TS2304: Cannot find name 'Symbol'.
node_modules/@types/node/index.d.ts(6225,59): error TS2304: Cannot find name 'WeakMap'.
node_modules/@types/node/index.d.ts(6226,59): error TS2304: Cannot find name 'WeakSet'.
En este momento, debe verificar el archivo de configuración de tsc (tsconfig.json)
Cambie el objetivo a "es6", use es5 en el archivo de configuración tsc generado por tsc --init, y se informará este error, porque 'Map' y 'Set' son características de es6
2. Se reporta un error al compilar
app.ts(1,1): error TS7038: A namespace-style import cannot be called or constructed, and will cause a failure at runtime.
app.ts(2,1): error TS7038: A namespace-style import cannot be called or constructed, and will cause a failure at runtime.
app.ts(3,14): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
app.ts(4,17): error TS2351: Cannot use 'new' with an expression whose type lacks a call or construct signature.
app.ts(5,26): error TS7006: Parameter 'ctx' implicitly has an 'any' type.
En app.js, ctx aún no ha definido el tipo de variable, simplemente cambie ctx a (ctx: any)
el código se muestra a continuación:
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx: any) => {
ctx.body = 'Hello World';
});
app.listen(3000);
Directorio de proyectos:
resultado de la operación:
------------------------
Al principio, mi pensamiento era bastante confuso, también leí muchos documentos e hice muchos intentos.
El jefe dijo que tenía que atravesarlo solo para saber qué era el pozo.
Finalmente entendido hoy. . Estoy tan cansado, aporté unas horas de buen fin de semana a la industria de TI.
Es bueno probar algo nuevo. (*^▽^*)