【问题标题】:Syntax Error: unexpected token: '{' Where is the issue语法错误:意外令牌:'{' 问题出在哪里
【发布时间】:2021-11-18 00:59:35
【问题描述】:

我一直在玩 Screeps,在向我的主模块添加代码时,我收到了上述错误。不幸的是,Screeps 没有告诉你这样的错误的位置,我什么也找不到。据我所知,问题是有一个支架丢失或不应该在那里。但正如我所说,我什么都看不到。下面是有问题的代码。

var roleHarvester = require('role.harvester');
var roleUpgrader = require('role.upgrader');
var roleBuilder = require('role.builder');
var roleAttaver = 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'} });
        } elif (harvesters.length < 2 && canspawnSmall == 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, CARRY, MOVE, MOVE], 'Harvester' + Game.time, {memory: {role: 'harvester'} });
        }
    } elif (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'} });
        } elif (upgraders.length < 2 && canspawnSmall == 0 && canspawBig != 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, CARRY, MOVE, MOVE], 'Upgrader' + Game.time, {memory: {role: 'upgrader'} });
        }
    } elif (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'} });
        } elif (builders.length < 2 && canspawnSmall == 0 && canspawnBig != 0) {
            Game.spawns['Spawn1'].spawnCreep([WORK, CARRY, CARRY, MOVE, MOVE], 'Builder' + Game.time, {memory: {role: 'builder'} });
        }
    } elif (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'} });
        } elif (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 closestDamagedStructure = tower.pos.findClosestByRange(FIND_STRUCTURES, {filter: (structure) => structure.hits < structure.hitsMax});
            if(closestDamagedStructure) {
                tower.repair(closestDamagedStructure);
            }
            
            const closestDamagedCreep = tower.pos.findClosestByRange(FIND_MY_CREEPS, {filter: (creep) => creep.hits < creep.hitsMax});
            if (closestDamagedCreep) {tower.heal(closestDamagedCreep);}
            
            const closestHostile = tower.pos.findClosestByRange(FIND_HOSTILE_CREEPS);
            if(closestHostile) {
                tower.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);
            }
        }
    }

【问题讨论】:

  • 我认为您发布的两个代码示例最后都缺少右大括号 ` } `。同样在您使用的第一个示例中,elif 应该是 else if

标签: javascript screeps


【解决方案1】:

因为elif 不适用于Javascript。您需要将elif 更改为else if,此外您没有module.exports.loop = function () { 的右括号添加此代码编译

var roleHarvester = require('role.harvester');
var roleUpgrader = require('role.upgrader');
var roleBuilder = require('role.builder');
var roleAttaver = 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 && canspawBig != 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')
    }
}

【讨论】:

  • 谢谢,但即使更改了这个(只有这个)我仍然有一个错误。括号中的“缺少 )”。这是什么意思,问题出在哪里。
  • 代码中的某处应该有一个右括号。检查所有左括号是否都有右括号,例如 if(var { } 需要类似 if (var ) { } 的括号
  • 谢谢,但我已经检查过了,他们都这样做了。
  • 错误是因为你没有右括号} for module.exports.loop = function () { 添加这个代码编译正确
猜你喜欢
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 2019-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多