react-native-bluetooth-datecs-printer
Version:
Module to printer in a Datecs bluetooth Printer
404 lines (315 loc) • 8.41 kB
Markdown
# ⚠️ Troubleshooting: Problemas Comuns ao Testar
## Erro: "Failed to resolve plugin for module expo-build-properties"
### Sintoma:
```
PluginError: Failed to resolve plugin for module "expo-build-properties"
Do you have node modules installed?
```
### Causa:
O pacote `expo-build-properties` não está instalado ou não está no `package.json`.
### Solução:
#### Opção 1: Instalar manualmente
```bash
cd test-printer-app # ou o nome do seu projeto
npm install expo-build-properties
npx expo run:android
```
#### Opção 2: Reinstalar tudo
```bash
cd test-printer-app
rm -rf node_modules package-lock.json
npm install
npm install expo-build-properties
npm install file:../react-native-bluetooth-datecs-printer
npx expo prebuild --clean
npx expo run:android
```
#### Opção 3: Verificar package.json
Certifique-se que o `package.json` contém:
```json
{
"dependencies": {
"expo-build-properties": "~0.13.0",
"react-native-bluetooth-datecs-printer": "file:../react-native-bluetooth-datecs-printer"
}
}
```
## Erro: "Unsupported engine" (Node.js)
### Sintoma:
```
npm warn EBADENGINE Unsupported engine
npm warn EBADENGINE required: { node: '>= 20.19.4' }
npm warn EBADENGINE current: { node: 'v20.19.0' }
```
### Causa:
React Native 0.81+ requer Node.js 20.19.4 ou superior.
### Solução:
#### Atualizar Node.js:
```bash
# Verificar versão atual
node --version
# Baixar Node.js 20.19.4+ ou 22.x LTS
# https://nodejs.org/
```
#### Ou ignorar o warning (geralmente funciona):
Os warnings podem ser ignorados se estiver próximo da versão necessária (20.19.0 vs 20.19.4).
## Erro: "Cannot find module" após instalar biblioteca
### Sintoma:
```
Cannot find module 'react-native-bluetooth-datecs-printer'
```
### Causa:
Caminho incorreto ou biblioteca não linkada corretamente.
### Solução:
#### Reinstalar com caminho absoluto:
```bash
cd test-printer-app
npm uninstall react-native-bluetooth-datecs-printer
npm install file:C:/projetos/masfelix/react-native-bluetooth-datecs-printer
npx expo prebuild --clean
```
#### Verificar instalação:
```bash
ls node_modules/react-native-bluetooth-datecs-printer
# Deve mostrar os arquivos da biblioteca
```
## Erro: Prebuild falha
### Sintoma:
```
Error: Failed to prebuild
```
### Possíveis causas e soluções:
#### 1. Java não instalado ou versão errada:
```bash
# Verificar Java
java --version
# Necessário: Java 17 ou 11
# Instalar Java 17 (Windows):
# https://adoptium.net/
```
#### 2. Android SDK não configurado:
```bash
# Verificar variáveis de ambiente
echo $ANDROID_HOME # Linux/Mac
echo $env:ANDROID_HOME # PowerShell
# Deve apontar para o SDK (ex: C:\Users\USER\AppData\Local\Android\Sdk)
```
#### 3. Gradle não consegue baixar dependências:
```bash
cd android
./gradlew clean
cd ..
npx expo prebuild --clean
```
#### 4. Problemas com cache:
```bash
# Limpar cache do Expo
npx expo prebuild --clean
# Limpar cache do npm
npm cache clean --force
# Limpar tudo e reinstalar
rm -rf node_modules package-lock.json android ios
npm install
npx expo prebuild
```
## Erro: Build falha no Android
### Sintoma:
```
BUILD FAILED in 1m 23s
```
### Soluções:
#### 1. Verificar logs detalhados:
```bash
npx expo run:android --no-build-cache
```
#### 2. Limpar build Android:
```bash
cd android
./gradlew clean
./gradlew --stop
cd ..
npx expo run:android
```
#### 3. Verificar configuração do Gradle:
Verifique `android/build.gradle` da biblioteca tem:
```gradle
compileSdk 36
minSdk 26
targetSdk 36
```
#### 4. Conflito de versões:
```bash
cd android
./gradlew app:dependencies
# Verificar conflitos
```
## Erro: App instala mas crasha ao abrir
### Sintoma:
App instala no dispositivo mas fecha imediatamente.
### Soluções:
#### 1. Ver logs do Android:
```bash
npx react-native log-android
# ou
adb logcat | grep -i "ReactNative"
```
#### 2. Permissões não concedidas:
Verifique que está solicitando permissões em runtime para Android 12+.
#### 3. Build de desenvolvimento vs produção:
```bash
# Testar em modo debug primeiro
npx expo run:android --variant debug
# Se funcionar, testar release:
npx expo run:android --variant release
```
## Erro: "Expo Go not supported"
### Sintoma:
Mensagem dizendo que a biblioteca não funciona com Expo Go.
### Solução:
Isso é **esperado**! Esta biblioteca nativa requer:
- ✅ `npx expo prebuild`
- ✅ Development Build
- ✅ EAS Build
- ❌ **NÃO** funciona com Expo Go
```bash
# Usar desta forma:
npx expo prebuild
npx expo run:android
```
## Erro: Script PowerShell não executa
### Sintoma:
```
.\test-library.ps1 : File cannot be loaded because running scripts is disabled
```
### Solução:
```powershell
# Executar como Administrador:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# Depois executar o script:
.\test-library.ps1
```
## Erro: "ENOENT: no such file or directory, open 'assets/splash.png'"
### Sintoma:
```
withAndroidDangerousBaseMod: ENOENT: no such file or directory,
open 'assets/splash.png'
```
### Causa:
O `app.json` referencia assets (icon, splash) que não existem.
### Solução:
#### Opção 1: Remover referências a assets do app.json
```json
{
"expo": {
"name": "test-printer-app",
"slug": "test-printer-app",
"version": "1.0.0",
"android": {
"permissions": ["BLUETOOTH_CONNECT", "BLUETOOTH_SCAN"],
"package": "com.test.printerapp"
},
"plugins": [
["expo-build-properties", {
"android": {
"compileSdkVersion": 36,
"targetSdkVersion": 36,
"minSdkVersion": 26
}
}]
]
}
}
```
#### Opção 2: Criar assets básicos
```bash
mkdir -p assets
# Criar imagens 1x1 pixel temporárias
convert -size 1x1 xc:white assets/icon.png
convert -size 1x1 xc:white assets/splash.png
convert -size 1x1 xc:white assets/adaptive-icon.png
```
#### Opção 3: Executar script atualizado
Os scripts `test-library.ps1` e `test-simple.ps1` já foram corrigidos para não referenciar assets.
## Erro: "ENOENT: no such file or directory" (arquivos de exemplo)
### Sintoma:
Arquivos de exemplo não encontrados.
### Solução:
#### Verificar que os arquivos existem:
```bash
cd c:\projetos\masfelix\react-native-bluetooth-datecs-printer
ls app.json.example
ls examples/ExpoExample.tsx
```
#### Se não existirem, criar app.json manualmente:
```json
{
"expo": {
"name": "YourAppName",
"slug": "your-app-name",
"plugins": [
["expo-build-properties", {
"android": {
"compileSdkVersion": 36,
"targetSdkVersion": 36,
"minSdkVersion": 26,
"buildToolsVersion": "35.0.0"
}
}]
],
"android": {
"permissions": [
"BLUETOOTH_CONNECT",
"BLUETOOTH_SCAN"
],
"package": "com.yourcompany.yourapp"
}
}
}
```
## Checklist de Verificação
Antes de reportar um problema, verifique:
- [ ] Node.js 20.19.4+ instalado
- [ ] Java 17 ou 11 instalado
- [ ] Android SDK instalado e configurado
- [ ] ANDROID_HOME configurado
- [ ] `expo-build-properties` está no package.json
- [ ] Biblioteca instalada em node_modules
- [ ] `npx expo prebuild` executado
- [ ] Não está tentando usar com Expo Go
## Comandos Úteis de Diagnóstico
```bash
# Verificar versões
node --version
npm --version
java --version
# Verificar Android
echo $ANDROID_HOME
adb devices
# Verificar instalação
ls node_modules/expo-build-properties
ls node_modules/react-native-bluetooth-datecs-printer
# Ver logs
npx react-native log-android
# Limpar tudo
rm -rf node_modules package-lock.json android ios
npm install
npx expo prebuild --clean
```
## Ainda com Problemas?
1. Verifique os logs completos
2. Compare com o exemplo em `examples/ExpoExample.tsx`
3. Teste primeiro com `test-simple.ps1` limpo
4. Verifique que tem as versões corretas instaladas
5. Consulte [EXPO_SETUP.md](./EXPO_SETUP.md) para configuração detalhada