Fix module import issue on fresh installs

- Added create_directories function to properly set up directory structure
- Added copy_module_files function to ensure JS modules are copied correctly
- Updated server.js to handle module imports more resiliently
- Fixed imports to work with both .js and no extension module references

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
MasterDraco 2025-03-07 08:59:01 +00:00
parent 72d230706a
commit 54871518fc
4 changed files with 107 additions and 8 deletions

View File

@ -1,8 +1,8 @@
export TRANSMISSION_REMOTE=true export TRANSMISSION_REMOTE=true
export TRANSMISSION_HOST="myserver.example.com" export TRANSMISSION_HOST="192.168.5.19"
export TRANSMISSION_PORT="9091" export TRANSMISSION_PORT="9091"
export TRANSMISSION_USER="username" export TRANSMISSION_USER=""
export TRANSMISSION_PASS="password" export TRANSMISSION_PASS=""
export TRANSMISSION_RPC_PATH="/transmission/rpc" export TRANSMISSION_RPC_PATH="/transmission/rpc"
export REMOTE_DOWNLOAD_DIR="/var/lib/transmission-daemon/downloads" export REMOTE_DOWNLOAD_DIR="/downloads"
export LOCAL_DOWNLOAD_DIR="/mnt/downloads" export LOCAL_DOWNLOAD_DIR="/media"

View File

@ -296,6 +296,13 @@ EOF
exit 1 exit 1
} }
# Copy JavaScript module files during update as well
log "INFO" "Copying JavaScript module files..."
copy_module_files || {
log "ERROR" "Failed to copy JavaScript module files"
exit 1
}
else else
# This is a fresh installation - run all steps # This is a fresh installation - run all steps
@ -359,6 +366,7 @@ else
log "INFO" "Creating directories..." log "INFO" "Creating directories..."
# Make sure CONFIG_DIR is set and exported # Make sure CONFIG_DIR is set and exported
export CONFIG_DIR=${CONFIG_DIR:-"/etc/transmission-rss-manager"} export CONFIG_DIR=${CONFIG_DIR:-"/etc/transmission-rss-manager"}
# Call our new create_directories function
create_directories || { create_directories || {
log "ERROR" "Directory creation failed" log "ERROR" "Directory creation failed"
exit 1 exit 1

View File

@ -1,6 +1,40 @@
#!/bin/bash #!/bin/bash
# File creator module for Transmission RSS Manager Installation # File creator module for Transmission RSS Manager Installation
function create_directories() {
echo -e "${YELLOW}Creating directories...${NC}"
# Create main installation directory
mkdir -p "$INSTALL_DIR"
log "INFO" "Created installation directory: $INSTALL_DIR"
# Create modules directory
mkdir -p "$INSTALL_DIR/modules"
log "INFO" "Created modules directory: $INSTALL_DIR/modules"
# Create data directory
mkdir -p "$INSTALL_DIR/data"
log "INFO" "Created data directory: $INSTALL_DIR/data"
# Create public directory structure
mkdir -p "$INSTALL_DIR/public/css"
mkdir -p "$INSTALL_DIR/public/js"
log "INFO" "Created public directories"
# Create config directory
mkdir -p "$CONFIG_DIR"
log "INFO" "Created config directory: $CONFIG_DIR"
# Create logs directory
mkdir -p "$INSTALL_DIR/logs"
log "INFO" "Created logs directory: $INSTALL_DIR/logs"
# Set permissions
chown -R "$USER:$USER" "$INSTALL_DIR"
chmod -R 755 "$INSTALL_DIR"
log "INFO" "Set permissions for installation directories"
}
function create_config_files() { function create_config_files() {
echo -e "${YELLOW}Creating configuration files...${NC}" echo -e "${YELLOW}Creating configuration files...${NC}"
@ -1771,4 +1805,29 @@ EOF
} }
echo "Configuration files created." echo "Configuration files created."
# Copy all JavaScript modules to the installation directory
echo "Copying JavaScript module files..."
copy_module_files
}
# Function to copy all JavaScript module files to the installation directory
function copy_module_files() {
# Create the modules directory if it doesn't exist
mkdir -p "$INSTALL_DIR/modules"
# Copy all JavaScript module files from the source directory
for js_file in "${SCRIPT_DIR}/modules/"*.js; do
if [ -f "$js_file" ]; then
module_name=$(basename "$js_file")
echo "Copying module: $module_name"
cp "$js_file" "$INSTALL_DIR/modules/$module_name"
# Set permissions
chown "$USER:$USER" "$INSTALL_DIR/modules/$module_name"
chmod 644 "$INSTALL_DIR/modules/$module_name"
fi
done
log "INFO" "Copied JavaScript modules to $INSTALL_DIR/modules/"
} }

View File

@ -15,9 +15,41 @@ const jwt = require('jsonwebtoken');
const bcrypt = require('bcrypt'); const bcrypt = require('bcrypt');
// Import custom modules // Import custom modules
const RssFeedManager = require('./modules/rss-feed-manager.js'); // Try to import with .js extension first, then fallback to no extension for better compatibility
const TransmissionClient = require('./modules/transmission-client.js'); let RssFeedManager, TransmissionClient, PostProcessor;
const PostProcessor = require('./modules/post-processor.js');
try {
RssFeedManager = require('./modules/rss-feed-manager.js');
} catch (e) {
try {
RssFeedManager = require('./modules/rss-feed-manager');
} catch (err) {
console.error('Failed to load RssFeedManager module:', err);
process.exit(1);
}
}
try {
TransmissionClient = require('./modules/transmission-client.js');
} catch (e) {
try {
TransmissionClient = require('./modules/transmission-client');
} catch (err) {
console.error('Failed to load TransmissionClient module:', err);
process.exit(1);
}
}
try {
PostProcessor = require('./modules/post-processor.js');
} catch (e) {
try {
PostProcessor = require('./modules/post-processor');
} catch (err) {
console.error('Failed to load PostProcessor module:', err);
process.exit(1);
}
}
// Constants and configuration // Constants and configuration
const DEFAULT_CONFIG_PATH = '/etc/transmission-rss-manager/config.json'; const DEFAULT_CONFIG_PATH = '/etc/transmission-rss-manager/config.json';