Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

181
Visualizações
¿Cómo puedo incluir una dependencia en cadena en línea en un paquete de módulos de JavaScript?

Tengo un módulo TypeScript que usa el código Lua de un archivo .lua externo para hacer algo de magia con el adaptador. Incluyo este código Lua en cadena en el JavaScript y luego uso el paquete 'lua-in-js' para ejecutarlo. Uso el módulo 'fs' para leer el archivo con fs.readFileSync y luego encadeno el resultado de esta manera. (Consulte module.ts a continuación).

 const luaCode = fs.readFileSync('./adapter.lua').toString()

Sin embargo, el desafío es que este módulo TypeScript se usa en React Native, donde el paquete 'fs' no es compatible. Uso 'tsc' para compilar el paquete de módulos, pero en el código compilado, el módulo 'fs' está incluido y se usa como una dependencia. (Consulte bundle.js a continuación).

 const fs_1 = require("fs"); const luaCode = (0, fs_1.readFileSync)('./adapter.lua').toString();

Al intentar ejecutar el código, falla porque 'fs' no es compatible con RN. Por lo tanto, el código Lua debería incluirse en el archivo del paquete en su totalidad dentro de la variable de cadena luaCode . ¿Cómo puedo conseguir esto? A continuación también se muestra mi tsconfig.json como referencia.

 { "compilerOptions": { "target": "ES2015", "module": "commonjs", "declaration": true, "outDir": "lib", "strict": true, "removeComments": true, "skipLibCheck": true, "isolatedModules": true }, "include": [ "src/**/*" ] }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Encontré la solución finalmente por mí mismo. Cambié el proceso de compilación para usar Babel, dejando 'tsc' para generar solo declaraciones de tipos. (Consulte el script de compilación en package.json a continuación).

 "build": "babel src --out-dir lib --extensions .ts && tsc",

Instalé el complemento de Babel 'babel-plugin-inline-import' y 'babel-plugin-module-resolver', de los cuales el primero condujo al resultado que quería. Para compilar usé el preset '@babel/preset-typescript'. (Consulte babel.config.js continuación).

 module.exports = { presets: ['@babel/preset-typescript'], plugins: [ [ 'babel-plugin-inline-import', { extensions: ['.lua'] } ] ], env: { test: { plugins: ['@babel/plugin-transform-modules-commonjs'] } } };

A continuación también se muestra mi tsconfig.json actualizado como referencia.

 { "compilerOptions": { "target": "ES2015", "module": "commonjs", "declaration": true, "outDir": "lib", "strict": true, "removeComments": true, "skipLibCheck": true, "emitDeclarationOnly": true, "isolatedModules": true, "moduleResolution": "node", }, "include": [ "src/**/*" ] }

Después de configurarlos, simplemente podía importar el archivo Lua en el módulo TypeScript y usarlo en 'lua-in-js'.

 import luaAdapter from './adapter.lua';
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda