Error: The referenced script on this Behaviour is missing

I’m new to Unity, and I don’t really know anything about coding. I’m making a 2d platformer, following “Brackeys” on youtube. The videoes are quite old, so they are with unity 4. But it hasn’t caused any problems before now. I took his shooting script, but it isn’t working. I just keep on getting the error: The referenced script on this Behaviour is missing. It’s located in the folder called “Assets”. This is my script:

using UnityEngine;
using System.Collections;

public class Weapon : MonoBehaviour {

public float fireRate = 0;
public float Damage = 10;
public LayerMask whatToHit;

float timeToFire = 0;
Transform firePoint;

// Use this for initialization
void Awake () {
	firePoint = transform.FindChild ("FirePoint");
	if (firePoint == null) {
		Debug.LogError ("No firePoint? WHAT?!");
	}
}

// Update is called once per frame
void Update () {
	if (fireRate == 0) {
		if (Input.GetButtonDown ("Fire1")) {
			Shoot();
		}
	}
	else {
		if (Input.GetButton ("Fire1") && Time.time > timeToFire) {
			timeToFire = Time.time + 1/fireRate;
			Shoot();
		}
	}
}

void Shoot () {
	Vector2 mousePosition = new Vector2 (Camera.main.ScreenToWorldPoint (Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);
	Vector2 firePointPosition = new Vector2 (firePoint.position.x, firePoint.position.y);
	RaycastHit2D hit = Physics2D.Raycast (firePointPosition, mousePosition-firePointPosition, 100, whatToHit);
	Debug.DrawLine (firePointPosition, (mousePosition-firePointPosition)*100, Color.cyan);
	if (hit.collider != null) {
		Debug.DrawLine (firePointPosition, hit.point, Color.red);
		Debug.Log ("We hit " + hit.collider.name + " and did " + Damage + " damage.");
	}
}

}

You can try to remove the unreferenced component of your gameobject, and drag-n-drop your weapon.cs script on your gameobject to add a new fresh one.
If your gameObject is a prefab don’t forget to apply the changes.