NullReferenceException: Object reference not set to an instance of an object error while using camera.main.fieldOfView

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class cameraControl : MonoBehaviour {

public GameObject Player ;
public GameObject cameraConstraint;
public GameObject CameralookAt;
private controller RR;
private float speed = 0;
public float defaltFOV, dsiredFOV = 0;
[Range(0,2)] public float smothTime = 0;


private void Awake () {

	Player = GameObject.FindGameObjectWithTag("Player");
	cameraConstraint = Player.transform.Find("camera constraint").gameObject;
	CameralookAt = Player.transform.Find("camera LookAt").gameObject;
	RR = Player.GetComponent<controller>();

	
}
private void update (){

}

private void FixedUpdate() {
	follow();
	boostFOV();
	
}
private void follow(){
	if(speed <= 23)
		speed = Mathf.Lerp(speed , RR.KPH / 2 ,Time.deltaTime);
	else
	speed = 23;

	gameObject.transform.position = Vector3.Lerp(transform.position,cameraConstraint.transform.position,Time.deltaTime * speed);
	gameObject.transform.LookAt(Player.gameObject.transform.position);
	defaltFOV = Camera.main.fieldOfView;
}
private void boostFOV (){

	if(Input.GetKey(KeyCode.LeftShift))
		Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, dsiredFOV, Time.deltaTime * smothTime);
	else 
		Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, defaltFOV, Time.deltaTime * smothTime);

}

}

Error=
NullReferenceException: Object reference not set to an instance of an object
cameraControl.follow () (at Assets/programming/cameraControl.cs:42)
cameraControl.FixedUpdate () (at Assets/programming/cameraControl.cs:30)

You have two issues. First of all the Camera.main property is just a shorthand for

Gameobject.FindWithTag("MainCamera").GetComponent<Camera>()

When Camera.main returns null, it just means you don’t have a gameobject tagged “MainCamera”, or you have a gameobject tagged “MainCamera”, but it doesn’t have a camera component. So sort out your scene and tag your camera properly if you want to use Camera.main

Your second issue is that you set your “defaltFOV” variable inside your “follow” method. That means you will overwriting that value each fixed update step. That means once you press the leftshift button you fov will move towards your “dsiredFOV” and at the same time you will change “defaltFOV” to be the current fov. You probably want to move the “defaltFOV” initialization to Start.

There are some minor issues which currently don’t affect anything. First of all you have an empty method called “update”. This won’t be called by Unity since it has to be named “Update”. Besides that there are some heavy spelling mistakes in your variable names. This has no effect on the actual functionality, however it can cause confusion later and especially when more than one person is working on that code. Currently you reached out to us to help you and spelling mistakes can cause a lot of confuction and misinterpretation.