Remember to capture a reference to the instance of the object when you instantiate it, something like this:
Canvas canvasInstance = Instantiate<Canvas>(canvasPrefab);
Text scoreTextInstance = Instantiate<Text>(scoreTextPrefab);
The code you showed is trying to parent the newly-spawned text to the prefab of the canvas, not the instance of the canvas you've spawned into your scene.
This is probably the most common error I see in Unity code, so be very careful to keep track of which variables refer to spawned instances and which to prefabs.