Tengo index.ts y dentro tengo algo como:
const start = () => {...} Ahora tengo app.ts que se ve así:
const dotenv = require('dotenv'); dotenv.config(); const express = require('express'); const app = express(); const server = require('http').createServer(app); const PORT = 4001 || process.env.PORT; server.listen(PORT, () => { console.log(`Server running on port ${PORT}`); // I want to import and call start like this : start() }); Mi package.json se ve así:
{ "name": "...", "version": "1.0.0", "description": "", "main": "index.ts", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node app.ts" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { ... } } y tsconfig.json :
{ "compilerOptions": { "target": "es5", "allowJs": true, "checkJs": true, "outDir": "./built", "allowSyntheticDefaultImports": true, "module": "CommonJS" } } La cuestión es que no puedo usar la directiva de import con esta configuración, así que supongo que estoy haciendo algo mal.
Si uso import , obtengo:
Advertencia: para cargar un módulo ES, configure "tipo": "módulo" en el paquete.json o use la extensión .mjs.
Si pongo en package.json “type” : “module” , entonces obtengo:
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: extensión de archivo desconocida ".ts"
entonces, uno tira de otro...
¿Cómo importar esta función en app.ts desde index.ts ?
Documentación de módulos de TypeScript para su exportación = sugerencia de sintaxis (a menos que esté mal escrito)
export = object_or_class para permitir que el módulo se importe como un módulo CommonJS usando require en node.
Exportando un objeto usando export en index.ts :
const exports = { start // plus any other exports as properties }; export = exports;seguido de requerirlo en app.ts como
const index = require(".directoryPath/index.js"); const start = index.startpuede resolver el problema.