You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Screeps主模块代码报Syntax Error: unexpected token '{'错误如何排查

问题修复说明

核心报错原因

你代码中所有的elif关键字都是非法语法:JavaScript 条件判断分支不存在elif写法,正确写法是else if。解析器遇到不识别的elif后,无法匹配后续的{符号,直接抛出unexpected token '{'报错。

其他需要修复的错误

  • 角色导入拼写错误:顶部攻击者角色导入语句为var roleAttaver = require('role.attacker');,后续调用时使用的是roleAttacker.run(creep),变量名不匹配,需将导入语句的变量名改为roleAttacker。
  • 变量拼写错误:升级者生成逻辑中的canspawBig != 0拼写错误,需改为canspawnBig != 0。
  • 塔楼逻辑错误:Game.spawns['Spawn1'].room.find(FIND_MY_STRUCTURES, {filter: { structureType: STRUCTURE_TOWER }})返回的是塔楼数组,直接调用tower.pos会报错,需改为调用数组第一个元素tower[0]。

修复后的完整代码

var roleHarvester = require('role.harvester');
var roleUpgrader = require('role.upgrader');
var roleBuilder = require('role.builder');
var roleAttacker = require('role.attacker');
var roleRepairer = require('role.repairer');

module.exports.loop = function () {
    var canspawnSmall = Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, CARRY, MOVE, MOVE], 
    'Worker1', { dryRun: true });
    var canspawnBig = Game.spawns['Spawn1'].spawnCreep([WORK, WORK, CARRY, CARRY, MOVE, MOVE], 
    'Worker1', { dryRun: true });
    var harvesters = _.filter(Game.creeps, (creep) => creep.memory.role == 'harvester');
        console.log('Harvesters: ' + harvesters.length);
    var builders = _.filter(Game.creeps, (creep) => creep.memory.role == 'builder');
        console.log('Builders: ' + builders.length);
    var upgraders = _.filter(Game.creeps, (creep) => creep.memory.role == 'upgrader');
        console.log('Upgraders: ' + upgraders.length);
    var repairers = _.filter(Game.creeps, (creep) => creep.memory.role == 'repairer');
        console.log('Repairers: ' + repairers.length);
    var attackers = _.filter(Game.creeps, (creep) => creep.memory.role == 'attacker');
        console.log('Attackers: ' + attackers.length);

    if (harvesters.length < 2) {
        if (harvesters.length < 2 && canspawnBig == 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, WORK, CARRY, CARRY, MOVE, MOVE], 'Harvester' + Game.time, {memory: {role: 'harvester'} });
        } else if (harvesters.length < 2 && canspawnSmall == 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, CARRY, MOVE, MOVE], 'Harvester' + Game.time, {memory: {role: 'harvester'} });
        }
    } else if (harvesters.length >= 2 && upgraders.length < 2) {
        if (upgraders.length < 2 && canspawnBig == 0 ) {
            Game.spawns['Spawn1'].spawnCreep([WORK, WORK, CARRY, CARRY, MOVE, MOVE], 'Upgrader' + Game.time, {memory: {role: 'upgrader'} });
        } else if (upgraders.length < 2 && canspawnSmall == 0 && canspawnBig != 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, CARRY, MOVE, MOVE], 'Upgrader' + Game.time, {memory: {role: 'upgrader'} });
        }
    } else if (harvesters.length >= 2 && upgraders.length >= 2 && builders.length < 2) {
        if (builders.length < 2 && canspawnBig == 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, WORK, CARRY, CARRY, MOVE, MOVE], 'Builder' + Game.time, {memory: {role: 'builder'} });
        } else if (builders.length < 2 && canspawnSmall == 0 && canspawnBig != 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, CARRY, MOVE, MOVE], 'Builder' + Game.time, {memory: {role: 'builder'} });
        }
    } else if (harvesters.length >= 2 && upgraders.length >= 2 && builders.length >= 2 && repairers.length < 2) {
        if (repairers.length < 2 && canspawnBig == 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, WORK, CARRY, CARRY, MOVE, MOVE], 'Repairer' + Game.time, {memory: {role: 'repairer'} });
        } else if (repairers.length < 2 && canspawnSmall == 0 && canspawnBig != 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, CARRY, MOVE, MOVE], 'Repairer' + Game.time, {memory: {role: 'repairer'} });
        }
    } else {
        console.log('All Set Chief')
    }

    console.log('Can Big:' + canspawnBig)
    console.log('Can Small:' + canspawnSmall)
    const tower = Game.spawns['Spawn1'].room.find(FIND_MY_STRUCTURES, {
        filter: { structureType: STRUCTURE_TOWER }
    });
    if(tower.length > 0) {
        const targetTower = tower[0];
        const closestDamagedStructure = targetTower.pos.findClosestByRange(FIND_STRUCTURES, {filter: (structure) => structure.hits < structure.hitsMax});
        if(closestDamagedStructure) {
            targetTower.repair(closestDamagedStructure);
        }
        
        const closestDamagedCreep = targetTower.pos.findClosestByRange(FIND_MY_CREEPS, {filter: (creep) => creep.hits < creep.hitsMax});
        if (closestDamagedCreep) {targetTower.heal(closestDamagedCreep);}
        
        const closestHostile = targetTower.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
        if(closestHostile) {
            targetTower.attack(closestHostile);
        }
    }

    for(var name in Game.creeps) {
        var creep = Game.creeps[name];
        if(creep.memory.role == 'harvester') {
            roleHarvester.run(creep);
        }
        if(creep.memory.role == 'upgrader') {
            roleUpgrader.run(creep);
        }
        if(creep.memory.role == 'builder') {
            roleBuilder.run(creep);
        }
        if(creep.memory.role == 'attacker') {
            roleAttacker.run(creep);
        }
        if(creep.memory.role == 'repairer') {
            roleRepairer.run(creep);
        }
    }
}

内容的提问来源于stack exchange,提问作者Akinshola Akinyemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:24:08