GameObject Bullet keeps getting destroyed.

I'm trying to make a projectile in Unity. I set up the script so that it will shoot, then delete itself in 2 seconds. The problem is that after 2 seconds, the object has been completely deleted and no more clones can be generated. Every tutorial I've read tells me to do the same thing, but this just won't work. Here's what I have for my scripts and the error:

MissingReferenceException: The object of type 'GameObject' has been destroyed but you are still trying to access it.


using UnityEngine;
using System.Collections;

public class CannonBallUpdate : MonoBehaviour {

    public int lifetime = 2;

    // Use this for initialization
    void Start () {
            print(GetInstanceID());
            Destroy(gameObject, 3);
    }

    // Update is called once per frame
    void Update () {

    }
}


var CannonBall : GameObject;
var speed = 8.5;

function ShootCannon ()
{
    var cannonBallClone : GameObject = Instantiate(CannonBall, transform.position, transform.rotation);
    cannonBallClone.rigidbody.velocity = transform.forward * speed;
}

function Update ()
{
    if (Input.GetButtonDown("Fire1")) {
        ShootCannon();
    }
}


I'm pretty new to this, and I honestly have no ideas how to fix this. Any ideas as to what I can do? Thanks!

Simple - make this into a prefab, and call it, say 'CannonBall'. Then, drag the prefab into the object that requires it (the Var CannonBall).