Estoy usando Angular 4 con Office.js. El proyecto es creado por Angular CLI.
El código es sencillo:
// declare const Office: any; // With the line above, the app runs perfect Office.initialize = function () { platformBrowserDynamic().bootstrapModule(AppModule); };tengo el error
No se puede encontrar el nombre 'Oficina'.
Ya hice npm install --save-dev @types/office-js
Mi archivo tsconfig.json:
{ "compileOnSave": false, "compilerOptions": { "outDir": "./dist/out-tsc", "baseUrl": "src", "sourceMap": true, "declaration": false, "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es5", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2016", "dom" ] } }ACTUALIZACIÓN 1:
Siguiendo la sugerencia de @MahmoodSajjadi, después npm install --save @microsoft/office-js y use
import { Office } from '@microsoft/office-js';Tengo este error:
ERROR en /my-app/src/main.ts (3,24): el archivo '/my-app/node_modules/@types/office-js/index.d.ts' no es un módulo.
ERROR en ./src/main.ts Módulo no encontrado: Error: No se puede resolver 'office-js' en '/my-app/src'
@ ./src/main.ts 3:0-35
@ multi webpack-dev-servidor/cliente? http://localhost:4200 ./src/main.ts
En package.json, en realidad es "@microsoft/office-js": "0.0.0" , no estoy seguro de que sea un paquete correcto.
ACTUALIZACIÓN 2:
Según la respuesta de Michael, parece que la versión de NPM no está lista, primero me quedaré con la versión de CDN. ¡Gracias por la ayuda de todos!
Parece que aún necesita especificar que se deben usar los tipos office-js . Abra src/tsconfig.app.json y agregue office-js a la matriz de tipos, que debería verse así si anteriormente era una matriz vacía:
"types": [ "office-js" ] A continuación, debe ejecutar el comando tsc -p tsconfig.json desde el directorio de su proyecto antes de intentar compilar el proyecto nuevamente.
Lo siguiente funciona perfectamente (tenga en cuenta los nombres de los paquetes)
npm install --save office-js @types/office-jsLuego consúmalo como el global que declara.
Office.initialize(0);Tenga en cuenta que office-js no es un módulo, es global. Por lo tanto, no importamos de él. Más bien, el paquete está disponible ambientalmente.
Si deseamos utilizar la importación como un medio para cargar office-js en tiempo de ejecución, podemos agregar
import 'office-js'; En cuyo caso, tampoco estamos importando nada de él, ya que no hay nada que importar, pero estamos estableciendo una dependencia en su ejecución, cuyo efecto secundario es crear la variable global window.Office .
Tenga en cuenta que en sus comentarios menciona un paquete @microsoft/office-js . En el momento de escribir este artículo, existe un paquete de este tipo, pero está completamente vacío, su punto de entrada especifica un archivo que ni siquiera existe, por lo que dudo que sea el paquete que pretende utilizar.
En una nota no relacionada , considere especificar el formato de su módulo explícitamente en su archivo tsconfig.json:
{ "compilerOptions": { "module": "commonjs" } }Es un escenario de lo más importante.
Por ahora, Office.js no se consume como un paquete de NPM, sino como una referencia de CDN. Sus typings/ d.ts provienen de @types , pero no su código real.
Le recomiendo que eche un vistazo a Script Lab , una herramienta recientemente anunciada y también una muestra de exhibición de código abierto, que usa Angular 4 y que puede usar como inspiración. Parte de la tecnología subyacente también se analiza en un podcast sobre el proyecto .